Files
supabase/apps/studio/components/interfaces/Explorer/utils.ts
T
Joshen Lim 2893c783d5 Hook up APIs for Notebooks CRUD (#49254)
## Context

API changes are ready so hooking up the endpoints for full CRUD UX E2E
- Can create notebooks
- Can load notebooks
- Can delete notebooks
- Can update notebooks
2026-08-20 22:23:20 +08:00

58 lines
1.4 KiB
TypeScript

import { untrustedSql } from '@supabase/pg-meta'
import { DEFAULT_CELL_ROW_LIMIT } from './QueryCell/QueryCell.utils'
import { generateDraftId } from '@/data/content/notebooks/notebook-schema'
import { untrustedLogSql } from '@/data/logs/safe-analytics-sql'
import type { Notebooks } from '@/types'
export const createQueryCellSkeleton = ({ title, sql }: { title?: string; sql?: string } = {}) => {
return {
title,
_tag: 'database_cell' as const,
_id: generateDraftId(),
view: 'table' as const,
chart: undefined,
unchecked_sql: untrustedSql(sql ?? ''),
row_limit: DEFAULT_CELL_ROW_LIMIT,
}
}
const DEFAULT_LOG_TIME_RANGE: Notebooks.TimeRange = {
_tag: 'relative_time_range',
unit: 'hour',
amount: 1,
}
export const createLogCellSkeleton = ({
sql,
title,
time_range = DEFAULT_LOG_TIME_RANGE,
}: { sql?: string; title?: string; time_range?: Notebooks.TimeRange } = {}) => {
return {
title,
_tag: 'log_cell' as const,
id: generateDraftId(),
view: 'table' as const,
chart: undefined,
unchecked_sql: untrustedLogSql(sql ?? ''),
time_range,
}
}
const DEFAULT_MARKDOWN_CONTENT = `
# New section
Add notes about your queries and results
`.trim()
export const createMarkdownCellSkeleton = ({
content = DEFAULT_MARKDOWN_CONTENT,
}: {
content?: string
} = {}) => {
return {
_tag: 'markdown_cell' as const,
_id: generateDraftId(),
text: content,
}
}