AK-21/Graphite-Industrial-Intelligence
0
1import { entityKind } from "../entity.js";2import type { AnySQLiteColumn, SQLiteColumn } from "./columns/index.js";3import type { SQLiteTable } from "./table.js";4export type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';5export type Reference = () => {6 readonly name?: string;7 readonly columns: SQLiteColumn[];8 readonly foreignTable: SQLiteTable;9 readonly foreignColumns: SQLiteColumn[];10};11export declare class ForeignKeyBuilder {12 static readonly [entityKind]: string;13 _: {14 brand: 'SQLiteForeignKeyBuilder';15 foreignTableName: 'TForeignTableName';16 };17 constructor(config: () => {18 name?: string;19 columns: SQLiteColumn[];20 foreignColumns: SQLiteColumn[];21 }, actions?: {22 onUpdate?: UpdateDeleteAction;23 onDelete?: UpdateDeleteAction;24 } | undefined);25 onUpdate(action: UpdateDeleteAction): this;26 onDelete(action: UpdateDeleteAction): this;27}28export declare class ForeignKey {29 readonly table: SQLiteTable;30 static readonly [entityKind]: string;31 readonly reference: Reference;32 readonly onUpdate: UpdateDeleteAction | undefined;33 readonly onDelete: UpdateDeleteAction | undefined;34 constructor(table: SQLiteTable, builder: ForeignKeyBuilder);35 getName(): string;36}37type ColumnsWithTable<TTableName extends string, TColumns extends SQLiteColumn[]> = {38 [Key in keyof TColumns]: AnySQLiteColumn<{39 tableName: TTableName;40 }>;41};42/**43 * @deprecated please use `foreignKey({ columns: [], foreignColumns: [] })` syntax without callback44 * @param config45 * @returns46 */47export declare function foreignKey<TTableName extends string, TForeignTableName extends string, TColumns extends [AnySQLiteColumn<{48 tableName: TTableName;49}>, ...AnySQLiteColumn<{50 tableName: TTableName;51}>[]]>(config: () => {52 name?: string;53 columns: TColumns;54 foreignColumns: ColumnsWithTable<TForeignTableName, TColumns>;55}): ForeignKeyBuilder;56export declare function foreignKey<TTableName extends string, TForeignTableName extends string, TColumns extends [AnySQLiteColumn<{57 tableName: TTableName;58}>, ...AnySQLiteColumn<{59 tableName: TTableName;60}>[]]>(config: {61 name?: string;62 columns: TColumns;63 foreignColumns: ColumnsWithTable<TForeignTableName, TColumns>;64}): ForeignKeyBuilder;65export {};66 