AK-21/Graphite-Industrial-Intelligence
0
1import type { BuildColumns } from "../column-builder.js";2import { entityKind } from "../entity.js";3import { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from "../table.js";4import type { CheckBuilder } from "./checks.js";5import { type SQLiteColumnBuilders } from "./columns/all.js";6import type { SQLiteColumn, SQLiteColumnBuilderBase } from "./columns/common.js";7import type { ForeignKeyBuilder } from "./foreign-keys.js";8import type { IndexBuilder } from "./indexes.js";9import type { PrimaryKeyBuilder } from "./primary-keys.js";10import type { UniqueConstraintBuilder } from "./unique-constraint.js";11export type SQLiteTableExtraConfigValue = IndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder;12export type SQLiteTableExtraConfig = Record<string, SQLiteTableExtraConfigValue>;13export type TableConfig = TableConfigBase<SQLiteColumn<any>>;14export declare class SQLiteTable<T extends TableConfig = TableConfig> extends Table<T> {15 static readonly [entityKind]: string;16}17export type AnySQLiteTable<TPartial extends Partial<TableConfig> = {}> = SQLiteTable<UpdateTableConfig<TableConfig, TPartial>>;18export type SQLiteTableWithColumns<T extends TableConfig> = SQLiteTable<T> & {19 [Key in keyof T['columns']]: T['columns'][Key];20};21export interface SQLiteTableFn<TSchema extends string | undefined = undefined> {22 <TTableName extends string, TColumnsMap extends Record<string, SQLiteColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfigValue[]): SQLiteTableWithColumns<{23 name: TTableName;24 schema: TSchema;25 columns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;26 dialect: 'sqlite';27 }>;28 <TTableName extends string, TColumnsMap extends Record<string, SQLiteColumnBuilderBase>>(name: TTableName, columns: (columnTypes: SQLiteColumnBuilders) => TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfigValue[]): SQLiteTableWithColumns<{29 name: TTableName;30 schema: TSchema;31 columns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;32 dialect: 'sqlite';33 }>;34 /**35 * @deprecated The third parameter of sqliteTable is changing and will only accept an array instead of an object36 *37 * @example38 * Deprecated version:39 * ```ts40 * export const users = sqliteTable("users", {41 * id: int(),42 * }, (t) => ({43 * idx: index('custom_name').on(t.id)44 * }));45 * ```46 *47 * New API:48 * ```ts49 * export const users = sqliteTable("users", {50 * id: int(),51 * }, (t) => [52 * index('custom_name').on(t.id)53 * ]);54 * ```55 */56 <TTableName extends string, TColumnsMap extends Record<string, SQLiteColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfig): SQLiteTableWithColumns<{57 name: TTableName;58 schema: TSchema;59 columns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;60 dialect: 'sqlite';61 }>;62 /**63 * @deprecated The third parameter of sqliteTable is changing and will only accept an array instead of an object64 *65 * @example66 * Deprecated version:67 * ```ts68 * export const users = sqliteTable("users", {69 * id: int(),70 * }, (t) => ({71 * idx: index('custom_name').on(t.id)72 * }));73 * ```74 *75 * New API:76 * ```ts77 * export const users = sqliteTable("users", {78 * id: int(),79 * }, (t) => [80 * index('custom_name').on(t.id)81 * ]);82 * ```83 */84 <TTableName extends string, TColumnsMap extends Record<string, SQLiteColumnBuilderBase>>(name: TTableName, columns: (columnTypes: SQLiteColumnBuilders) => TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfig): SQLiteTableWithColumns<{85 name: TTableName;86 schema: TSchema;87 columns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;88 dialect: 'sqlite';89 }>;90}91export declare const sqliteTable: SQLiteTableFn;92export declare function sqliteTableCreator(customizeTableName: (name: string) => string): SQLiteTableFn;93 