({ tableId, includeBuiltIn = false }: UseTableColumnsOptions)
| 10 | |
| 11 | /** Fetches table schema columns as dropdown options. */ |
| 12 | export function useTableColumns({ tableId, includeBuiltIn = false }: UseTableColumnsOptions) { |
| 13 | const workspaceId = useWorkflowRegistry((state) => state.hydration.workspaceId) |
| 14 | const { data: tableData } = useTable(workspaceId ?? undefined, tableId ?? undefined) |
| 15 | |
| 16 | const schemaColumns = useMemo<ColumnOption[]>( |
| 17 | () => |
| 18 | (tableData?.schema?.columns || []).map((col) => ({ |
| 19 | value: col.name, |
| 20 | label: col.name, |
| 21 | })), |
| 22 | [tableData] |
| 23 | ) |
| 24 | |
| 25 | return useMemo(() => { |
| 26 | if (includeBuiltIn) { |
| 27 | const builtInCols = [ |
| 28 | { value: 'createdAt', label: 'createdAt' }, |
| 29 | { value: 'updatedAt', label: 'updatedAt' }, |
| 30 | ] |
| 31 | return [...schemaColumns, ...builtInCols] |
| 32 | } |
| 33 | |
| 34 | return schemaColumns |
| 35 | }, [includeBuiltIn, schemaColumns]) |
| 36 | } |
no test coverage detected