{"version":3,"file":"utils.cjs","names":["Table","PgTable","IndexBuilder","CheckBuilder","UniqueConstraintBuilder","PrimaryKeyBuilder","ForeignKeyBuilder","PgPolicy","TableSchema","Subquery","SQL","ViewBaseConfig","PgViewConfig","PgMaterializedViewConfig"],"sources":["../../src/pg-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { PgTable } from '~/pg-core/table.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table, TableSchema } from '~/table.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport { type Check, CheckBuilder } from './checks.ts';\nimport type { PgCodecs } from './codecs.ts';\nimport { type ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport { PgPolicy } from './policies.ts';\nimport { type PrimaryKey, PrimaryKeyBuilder } from './primary-keys.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { PgViewBase } from './view-base.ts';\nimport { PgMaterializedViewConfig, PgViewConfig } from './view-common.ts';\nimport type { PgMaterializedView, PgView } from './view.ts';\n\nexport function getTableConfig<TTable extends PgTable>(table: TTable) {\n\tconst columns = Object.values(table[Table.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[PgTable.Symbol.InlineForeignKeys]);\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst name = table[Table.Symbol.Name];\n\tconst schema = table[Table.Symbol.Schema];\n\tconst policies: PgPolicy[] = [];\n\tconst enableRLS: boolean = table[PgTable.Symbol.EnableRLS];\n\n\tconst extraConfigBuilder = table[PgTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[Table.Symbol.ExtraConfigColumns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of extraValues) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, PgPolicy)) {\n\t\t\t\tpolicies.push(builder);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t\tschema,\n\t\tpolicies,\n\t\tenableRLS,\n\t};\n}\n\nexport function extractUsedTable(table: PgTable | Subquery | PgViewBase | SQL): string[] {\n\tif (is(table, PgTable)) {\n\t\treturn [\n\t\t\ttable[TableSchema] ? `${table[TableSchema]}.${table[Table.Symbol.BaseName]}` : table[Table.Symbol.BaseName],\n\t\t];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: PgView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[PgViewConfig],\n\t};\n}\n\nexport function getMaterializedViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: PgMaterializedView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[PgMaterializedViewConfig],\n\t};\n}\n\nexport type DrizzlePgConfig<TRelations extends AnyRelations> =\n\t& Omit<DrizzleConfig<Record<string, never>, TRelations>, 'schema'>\n\t& { codecs?: PgCodecs | undefined };\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,SAAgB,eAAuC,OAAe;CACrE,MAAM,UAAU,OAAO,OAAO,MAAMA,iBAAM,OAAO,SAAS;CAC1D,MAAM,UAAmB,EAAE;CAC3B,MAAM,SAAkB,EAAE;CAC1B,MAAM,cAA4B,EAAE;CACpC,MAAM,cAA4B,OAAO,OAAO,MAAMC,2BAAQ,OAAO,mBAAmB;CACxF,MAAM,oBAAwC,EAAE;CAChD,MAAM,OAAO,MAAMD,iBAAM,OAAO;CAChC,MAAM,SAAS,MAAMA,iBAAM,OAAO;CAClC,MAAM,WAAuB,EAAE;CAC/B,MAAM,YAAqB,MAAMC,2BAAQ,OAAO;CAEhD,MAAM,qBAAqB,MAAMA,2BAAQ,OAAO;AAEhD,KAAI,uBAAuB,QAAW;EACrC,MAAM,cAAc,mBAAmB,MAAMD,iBAAM,OAAO,oBAAoB;EAC9E,MAAM,cAAc,MAAM,QAAQ,YAAY,GAAG,YAAY,KAAK,EAAE,GAAY,OAAO,OAAO,YAAY;AAC1G,OAAK,MAAM,WAAW,YACrB,yBAAO,SAASE,qCAAa,CAC5B,SAAQ,KAAK,QAAQ,MAAM,MAAM,CAAC;+BACrB,SAASC,oCAAa,CACnC,QAAO,KAAK,QAAQ,MAAM,MAAM,CAAC;+BACpB,SAASC,0DAAwB,CAC9C,mBAAkB,KAAK,QAAQ,MAAM,MAAM,CAAC;+BAC/B,SAASC,+CAAkB,CACxC,aAAY,KAAK,QAAQ,MAAM,MAAM,CAAC;+BACzB,SAASC,+CAAkB,CACxC,aAAY,KAAK,QAAQ,MAAM,MAAM,CAAC;+BACzB,SAASC,kCAAS,CAC/B,UAAS,KAAK,QAAQ;;AAKzB,QAAO;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,SAAgB,iBAAiB,OAAwD;AACxF,yBAAO,OAAON,2BAAQ,CACrB,QAAO,CACN,MAAMO,0BAAe,GAAG,MAAMA,wBAAa,GAAG,MAAMR,iBAAM,OAAO,cAAc,MAAMA,iBAAM,OAAO,UAClG;AAEF,yBAAO,OAAOS,uBAAS,CACtB,QAAO,MAAM,EAAE,cAAc,EAAE;AAEhC,yBAAO,OAAOC,iBAAI,CACjB,QAAO,MAAM,cAAc,EAAE;AAE9B,QAAO,EAAE;;AAGV,SAAgB,cAGd,MAAgC;AACjC,QAAO;EACN,GAAG,KAAKC;EACR,GAAG,KAAKC;EACR;;AAGF,SAAgB,0BAGd,MAA4C;AAC7C,QAAO;EACN,GAAG,KAAKD;EACR,GAAG,KAAKE;EACR"}