UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

71 lines 2.4 kB
import { entityKind } from "../entity.js"; import { Table } from "../table.js"; import { getPgColumnBuilders } from "./columns/all.js"; const InlineForeignKeys = Symbol.for("drizzle:PgInlineForeignKeys"); const EnableRLS = Symbol.for("drizzle:EnableRLS"); class PgTable extends Table { static [entityKind] = "PgTable"; /** @internal */ static Symbol = Object.assign({}, Table.Symbol, { InlineForeignKeys, EnableRLS }); /**@internal */ [InlineForeignKeys] = []; /** @internal */ [EnableRLS] = false; /** @internal */ [Table.Symbol.ExtraConfigBuilder] = void 0; /** @internal */ [Table.Symbol.ExtraConfigColumns] = {}; } function pgTableWithSchema(name, columns, extraConfig, schema, baseName = name) { const rawTable = new PgTable(name, schema, baseName); const parsedColumns = typeof columns === "function" ? columns(getPgColumnBuilders()) : columns; const builtColumns = Object.fromEntries( Object.entries(parsedColumns).map(([name2, colBuilderBase]) => { const colBuilder = colBuilderBase; colBuilder.setName(name2); const column = colBuilder.build(rawTable); rawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable)); return [name2, column]; }) ); const builtColumnsForExtraConfig = Object.fromEntries( Object.entries(parsedColumns).map(([name2, colBuilderBase]) => { const colBuilder = colBuilderBase; colBuilder.setName(name2); const column = colBuilder.buildExtraConfigColumn(rawTable); return [name2, column]; }) ); const table = Object.assign(rawTable, builtColumns); table[Table.Symbol.Columns] = builtColumns; table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig; if (extraConfig) { table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig; } return Object.assign(table, { enableRLS: () => { table[PgTable.Symbol.EnableRLS] = true; return table; } }); } const pgTable = (name, columns, extraConfig) => { return pgTableWithSchema(name, columns, extraConfig, void 0); }; function pgTableCreator(customizeTableName) { return (name, columns, extraConfig) => { return pgTableWithSchema(customizeTableName(name), columns, extraConfig, void 0, name); }; } export { EnableRLS, InlineForeignKeys, PgTable, pgTable, pgTableCreator, pgTableWithSchema }; //# sourceMappingURL=table.js.map