AK-21/Graphite-Industrial-Intelligence
0
1import type { BuildColumns, BuildExtraConfigColumns } from "../column-builder.cjs";2import { entityKind } from "../entity.cjs";3import { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from "../table.cjs";4import type { CheckBuilder } from "./checks.cjs";5import { type GelColumnsBuilders } from "./columns/all.cjs";6import type { GelColumn, GelColumnBuilderBase } from "./columns/common.cjs";7import type { ForeignKeyBuilder } from "./foreign-keys.cjs";8import type { AnyIndexBuilder } from "./indexes.cjs";9import type { GelPolicy } from "./policies.cjs";10import type { PrimaryKeyBuilder } from "./primary-keys.cjs";11import type { UniqueConstraintBuilder } from "./unique-constraint.cjs";12export type GelTableExtraConfigValue = AnyIndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder | GelPolicy;13export type GelTableExtraConfig = Record<string, GelTableExtraConfigValue>;14export type TableConfig = TableConfigBase<GelColumn>;15export declare class GelTable<T extends TableConfig = TableConfig> extends Table<T> {16 static readonly [entityKind]: string;17}18export type AnyGelTable<TPartial extends Partial<TableConfig> = {}> = GelTable<UpdateTableConfig<TableConfig, TPartial>>;19export type GelTableWithColumns<T extends TableConfig> = GelTable<T> & {20 [Key in keyof T['columns']]: T['columns'][Key];21} & {22 enableRLS: () => Omit<GelTableWithColumns<T>, 'enableRLS'>;23};24export interface GelTableFn<TSchema extends string | undefined = undefined> {25 /**26 * @deprecated The third parameter of GelTable is changing and will only accept an array instead of an object27 *28 * @example29 * Deprecated version:30 * ```ts31 * export const users = gelTable("users", {32 * id: integer(),33 * }, (t) => ({34 * idx: index('custom_name').on(t.id)35 * }));36 * ```37 *38 * New API:39 * ```ts40 * export const users = gelTable("users", {41 * id: integer(),42 * }, (t) => [43 * index('custom_name').on(t.id)44 * ]);45 * ```46 */47 <TTableName extends string, TColumnsMap extends Record<string, GelColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, 'gel'>) => GelTableExtraConfig): GelTableWithColumns<{48 name: TTableName;49 schema: TSchema;50 columns: BuildColumns<TTableName, TColumnsMap, 'gel'>;51 dialect: 'gel';52 }>;53 /**54 * @deprecated The third parameter of gelTable is changing and will only accept an array instead of an object55 *56 * @example57 * Deprecated version:58 * ```ts59 * export const users = gelTable("users", {60 * id: integer(),61 * }, (t) => ({62 * idx: index('custom_name').on(t.id)63 * }));64 * ```65 *66 * New API:67 * ```ts68 * export const users = gelTable("users", {69 * id: integer(),70 * }, (t) => [71 * index('custom_name').on(t.id)72 * ]);73 * ```74 */75 <TTableName extends string, TColumnsMap extends Record<string, GelColumnBuilderBase>>(name: TTableName, columns: (columnTypes: GelColumnsBuilders) => TColumnsMap, extraConfig: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, 'gel'>) => GelTableExtraConfig): GelTableWithColumns<{76 name: TTableName;77 schema: TSchema;78 columns: BuildColumns<TTableName, TColumnsMap, 'gel'>;79 dialect: 'gel';80 }>;81 <TTableName extends string, TColumnsMap extends Record<string, GelColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, 'gel'>) => GelTableExtraConfigValue[]): GelTableWithColumns<{82 name: TTableName;83 schema: TSchema;84 columns: BuildColumns<TTableName, TColumnsMap, 'gel'>;85 dialect: 'gel';86 }>;87 <TTableName extends string, TColumnsMap extends Record<string, GelColumnBuilderBase>>(name: TTableName, columns: (columnTypes: GelColumnsBuilders) => TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap, 'gel'>) => GelTableExtraConfigValue[]): GelTableWithColumns<{88 name: TTableName;89 schema: TSchema;90 columns: BuildColumns<TTableName, TColumnsMap, 'gel'>;91 dialect: 'gel';92 }>;93}94export declare const gelTable: GelTableFn;95export declare function gelTableCreator(customizeTableName: (name: string) => string): GelTableFn;96 