{"version":3,"file":"table.cjs","names":["Table","entityKind","getCockroachColumnBuilders"],"sources":["../../src/cockroach-core/table.ts"],"sourcesContent":["import { type Casing, getCasingFn } from '~/casing.ts';\nimport type { BuildColumns, BuildExtraConfigColumns, ColumnBuilderBase } from '~/column-builder.ts';\nimport { entityKind } from '~/entity.ts';\nimport {\n\ttype InferTableColumnsModels,\n\tTable,\n\ttype TableConfig as TableConfigBase,\n\ttype UpdateTableConfig,\n} from '~/table.ts';\nimport type { CheckBuilder } from './checks.ts';\nimport { type CockroachColumnsBuilders, getCockroachColumnBuilders } from './columns/all.ts';\nimport type {\n\tCockroachColumn,\n\tCockroachColumns,\n\tCockroachColumnWithArrayBuilder,\n\tExtraConfigColumn,\n} from './columns/common.ts';\nimport type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { AnyIndexBuilder } from './indexes.ts';\nimport type { CockroachPolicy } from './policies.ts';\nimport type { PrimaryKeyBuilder } from './primary-keys.ts';\nimport type { UniqueConstraintBuilder } from './unique-constraint.ts';\n\nexport type CockroachTableExtraConfigValue =\n\t| AnyIndexBuilder\n\t| CheckBuilder\n\t| ForeignKeyBuilder\n\t| PrimaryKeyBuilder\n\t| UniqueConstraintBuilder\n\t| CockroachPolicy;\n\nexport type CockroachTableExtraConfig = Record<\n\tstring,\n\tCockroachTableExtraConfigValue\n>;\n\nexport type TableConfig = TableConfigBase<CockroachColumns>;\n\n/** @internal */\nexport const InlineForeignKeys = Symbol.for('drizzle:CockroachInlineForeignKeys');\n/** @internal */\nexport const EnableRLS = Symbol.for('drizzle:EnableRLS');\n\nexport class CockroachTable<T extends TableConfig = TableConfig> extends Table<T> {\n\tstatic override readonly [entityKind]: string = 'CockroachTable';\n\n\t/** @internal */\n\tstatic override readonly Symbol = Object.assign({}, Table.Symbol, {\n\t\tInlineForeignKeys: InlineForeignKeys as typeof InlineForeignKeys,\n\t\tEnableRLS: EnableRLS as typeof EnableRLS,\n\t});\n\n\t/**@internal */\n\t[InlineForeignKeys]: ForeignKey[] = [];\n\n\t/** @internal */\n\t[EnableRLS]: boolean = false;\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigBuilder]:\n\t\t| ((self: Record<string, CockroachColumn>) => CockroachTableExtraConfig)\n\t\t| undefined = undefined;\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigColumns]: Record<string, ExtraConfigColumn> = {};\n}\n\nexport type AnyCockroachTable<TPartial extends Partial<TableConfig> = {}> = CockroachTable<\n\tUpdateTableConfig<TableConfig, TPartial>\n>;\n\nexport type CockroachTableWithColumns<T extends TableConfig> =\n\t& CockroachTable<T>\n\t& T['columns']\n\t& InferTableColumnsModels<T['columns']>\n\t& {\n\t\t/** @deprecated use `cockroachTable.withRLS()` instead*/\n\t\tenableRLS: () => Omit<\n\t\t\tCockroachTableWithColumns<T>,\n\t\t\t'enableRLS'\n\t\t>;\n\t};\n\n/** @internal */\nexport function cockroachTableWithSchema<\n\tTTableName extends string,\n\tTSchemaName extends string | undefined,\n\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n>(\n\tname: TTableName,\n\tcolumns: TColumnsMap | ((columnTypes: CockroachColumnsBuilders) => TColumnsMap),\n\textraConfig:\n\t\t| ((\n\t\t\tself: BuildExtraConfigColumns<TTableName, TColumnsMap, 'cockroach'>,\n\t\t) => CockroachTableExtraConfig | CockroachTableExtraConfigValue[])\n\t\t| undefined,\n\tschema: TSchemaName,\n\tcasing: Casing | undefined,\n\tbaseName = name,\n): CockroachTableWithColumns<{\n\tname: TTableName;\n\tschema: TSchemaName;\n\tcolumns: BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\tdialect: 'cockroach';\n}> {\n\tconst casingFn = getCasingFn(casing);\n\tconst rawTable = new CockroachTable<{\n\t\tname: TTableName;\n\t\tschema: TSchemaName;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\t\tdialect: 'cockroach';\n\t}>(name, schema, baseName);\n\n\tconst parsedColumns: TColumnsMap = typeof columns === 'function' ? columns(getCockroachColumnBuilders()) : columns;\n\n\tconst builtColumns = Object.fromEntries(\n\t\tObject.entries(parsedColumns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as CockroachColumnWithArrayBuilder;\n\t\t\tcolBuilder.setName(name, casingFn);\n\t\t\tconst column = colBuilder.build(rawTable).postBuild();\n\t\t\trawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\n\tconst builtColumnsForExtraConfig = Object.fromEntries(\n\t\tObject.entries(parsedColumns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as CockroachColumnWithArrayBuilder;\n\t\t\tcolBuilder.setName(name, casingFn);\n\t\t\tconst column = colBuilder.buildExtraConfigColumn(rawTable);\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildExtraConfigColumns<TTableName, TColumnsMap, 'cockroach'>;\n\n\tconst table = Object.assign(rawTable, builtColumns);\n\n\ttable[Table.Symbol.Columns] = builtColumns;\n\ttable[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;\n\n\tif (extraConfig) {\n\t\ttable[CockroachTable.Symbol.ExtraConfigBuilder] = extraConfig as any;\n\t}\n\n\treturn Object.assign(table, {\n\t\tenableRLS: () => {\n\t\t\ttable[CockroachTable.Symbol.EnableRLS] = true;\n\t\t\treturn table as CockroachTableWithColumns<{\n\t\t\t\tname: TTableName;\n\t\t\t\tschema: TSchemaName;\n\t\t\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\t\t\t\tdialect: 'cockroach';\n\t\t\t}>;\n\t\t},\n\t}) as any;\n}\n\nexport interface CockroachTableFnInternal<TSchema extends string | undefined = undefined> {\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (\n\t\t\tself: BuildExtraConfigColumns<TTableName, TColumnsMap, 'cockroach'>,\n\t\t) => CockroachTableExtraConfigValue[],\n\t): CockroachTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\t\tdialect: 'cockroach';\n\t}>;\n\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: (columnTypes: CockroachColumnsBuilders) => TColumnsMap,\n\t\textraConfig?: (\n\t\t\tself: BuildExtraConfigColumns<TTableName, TColumnsMap, 'cockroach'>,\n\t\t) => CockroachTableExtraConfigValue[],\n\t): CockroachTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'cockroach'>;\n\t\tdialect: 'cockroach';\n\t}>;\n}\n\nexport interface CockroachTableFn<TSchema extends string | undefined = undefined>\n\textends CockroachTableFnInternal<TSchema>\n{\n\twithRLS: CockroachTableFnInternal<TSchema>;\n}\n\n/** @internal */\nexport function cockroachTableWithCasing(casing: Casing | undefined): CockroachTableFn {\n\tconst cockroachTableInternal: CockroachTableFnInternal = (name, columns, extraConfig) => {\n\t\treturn cockroachTableWithSchema(name, columns, extraConfig, undefined, casing);\n\t};\n\n\tconst cockroachTableWithRLS: CockroachTableFn['withRLS'] = (name, columns, extraConfig) => {\n\t\tconst table = cockroachTableWithSchema(name, columns, extraConfig, undefined, casing);\n\t\ttable[EnableRLS] = true;\n\n\t\treturn table;\n\t};\n\n\treturn Object.assign(cockroachTableInternal, {\n\t\twithRLS: cockroachTableWithRLS,\n\t});\n}\n\nexport const cockroachTable = cockroachTableWithCasing(undefined);\n\nexport function cockroachTableCreator(\n\tcustomizeTableName: (name: string) => string,\n\tcasing?: Casing | undefined,\n): CockroachTableFn {\n\tconst fn: CockroachTableFnInternal = (name, columns, extraConfig) => {\n\t\treturn cockroachTableWithSchema(\n\t\t\tcustomizeTableName(name) as typeof name,\n\t\t\tcolumns,\n\t\t\textraConfig,\n\t\t\tundefined,\n\t\t\tcasing,\n\t\t\tname,\n\t\t);\n\t};\n\n\treturn Object.assign(fn, {\n\t\twithRLS: ((name, columns, extraConfig) => {\n\t\t\tconst table = cockroachTableWithSchema(\n\t\t\t\tcustomizeTableName(name) as typeof name,\n\t\t\t\tcolumns,\n\t\t\t\textraConfig,\n\t\t\t\tundefined,\n\t\t\t\tcasing,\n\t\t\t\tname,\n\t\t\t);\n\t\t\ttable[EnableRLS] = true;\n\n\t\t\treturn table;\n\t\t}) as CockroachTableFnInternal,\n\t});\n}\n"],"mappings":";;;;;;;;;AAuCA,MAAa,oBAAoB,OAAO,IAAI,qCAAqC;;AAEjF,MAAa,YAAY,OAAO,IAAI,oBAAoB;AAExD,IAAa,iBAAb,cAAyEA,iBAAS;CACjF,QAA0BC,0BAAsB;;CAGhD,OAAyB,SAAS,OAAO,OAAO,EAAE,EAAED,iBAAM,QAAQ;EAC9C;EACR;EACX,CAAC;;CAGF,CAAC,qBAAmC,EAAE;;CAGtC,CAAC,aAAsB;;CAGvB,CAAUA,iBAAM,OAAO,sBAER;;CAGf,CAAUA,iBAAM,OAAO,sBAAyD,EAAE;;;AAoBnF,SAAgB,yBAKf,MACA,SACA,aAKA,QACA,QACA,WAAW,MAMT;CACF,MAAM,wCAAuB,OAAO;CACpC,MAAM,WAAW,IAAI,eAKlB,MAAM,QAAQ,SAAS;CAE1B,MAAM,gBAA6B,OAAO,YAAY,aAAa,QAAQE,+DAA4B,CAAC,GAAG;CAE3G,MAAM,eAAe,OAAO,YAC3B,OAAO,QAAQ,cAAc,CAAC,KAAK,CAAC,MAAM,oBAAoB;EAC7D,MAAM,aAAa;AACnB,aAAW,QAAQ,MAAM,SAAS;EAClC,MAAM,SAAS,WAAW,MAAM,SAAS,CAAC,WAAW;AACrD,WAAS,mBAAmB,KAAK,GAAG,WAAW,iBAAiB,QAAQ,SAAS,CAAC;AAClF,SAAO,CAAC,MAAM,OAAO;GACpB,CACF;CAED,MAAM,6BAA6B,OAAO,YACzC,OAAO,QAAQ,cAAc,CAAC,KAAK,CAAC,MAAM,oBAAoB;EAC7D,MAAM,aAAa;AACnB,aAAW,QAAQ,MAAM,SAAS;AAElC,SAAO,CAAC,MADO,WAAW,uBAAuB,SAAS,CACrC;GACpB,CACF;CAED,MAAM,QAAQ,OAAO,OAAO,UAAU,aAAa;AAEnD,OAAMF,iBAAM,OAAO,WAAW;AAC9B,OAAMA,iBAAM,OAAO,sBAAsB;AAEzC,KAAI,YACH,OAAM,eAAe,OAAO,sBAAsB;AAGnD,QAAO,OAAO,OAAO,OAAO,EAC3B,iBAAiB;AAChB,QAAM,eAAe,OAAO,aAAa;AACzC,SAAO;IAOR,CAAC;;;AA4CH,SAAgB,yBAAyB,QAA8C;CACtF,MAAM,0BAAoD,MAAM,SAAS,gBAAgB;AACxF,SAAO,yBAAyB,MAAM,SAAS,aAAa,QAAW,OAAO;;CAG/E,MAAM,yBAAsD,MAAM,SAAS,gBAAgB;EAC1F,MAAM,QAAQ,yBAAyB,MAAM,SAAS,aAAa,QAAW,OAAO;AACrF,QAAM,aAAa;AAEnB,SAAO;;AAGR,QAAO,OAAO,OAAO,wBAAwB,EAC5C,SAAS,uBACT,CAAC;;AAGH,MAAa,iBAAiB,yBAAyB,OAAU;AAEjE,SAAgB,sBACf,oBACA,QACmB;CACnB,MAAM,MAAgC,MAAM,SAAS,gBAAgB;AACpE,SAAO,yBACN,mBAAmB,KAAK,EACxB,SACA,aACA,QACA,QACA,KACA;;AAGF,QAAO,OAAO,OAAO,IAAI,EACxB,WAAW,MAAM,SAAS,gBAAgB;EACzC,MAAM,QAAQ,yBACb,mBAAmB,KAAK,EACxB,SACA,aACA,QACA,QACA,KACA;AACD,QAAM,aAAa;AAEnB,SAAO;KAER,CAAC"}