@prisma-next/adapter-postgres 0.15.0-dev.9 → 0.16.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { n as renderLoweredSql, r as createPostgresBuiltinCodecLookup, t as PostgresControlAdapter } from "./control-adapter-Di47mobV.mjs";
1
+ import { n as renderLoweredSql, r as createPostgresBuiltinCodecLookup, t as PostgresControlAdapter } from "./control-adapter-B6IM_oTR.mjs";
2
2
  import { APP_SPACE_ID } from "@prisma-next/framework-components/control";
3
3
  import { isDdlNode } from "@prisma-next/sql-relational-core/ast";
4
4
  //#region src/core/adapter.ts
@@ -63,4 +63,4 @@ function createPostgresAdapter(options) {
63
63
  //#endregion
64
64
  export { postgresRawCodecInferer as n, createPostgresAdapter as t };
65
65
 
66
- //# sourceMappingURL=adapter-CBYnmMf1.mjs.map
66
+ //# sourceMappingURL=adapter-BaZsfXGA.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-CBYnmMf1.mjs","names":[],"sources":["../src/core/adapter.ts"],"sourcesContent":["import type { CodecRegistry } from '@prisma-next/framework-components/codec';\nimport { APP_SPACE_ID } from '@prisma-next/framework-components/control';\nimport type {\n Adapter,\n AdapterProfile,\n AnyQueryAst,\n LowererContext,\n RawSqlLiteral,\n SqlQueryable,\n} from '@prisma-next/sql-relational-core/ast';\nimport { isDdlNode } from '@prisma-next/sql-relational-core/ast';\nimport type { RawCodecInferer } from '@prisma-next/sql-relational-core/expression';\nimport type { PostgresDdlNode } from '@prisma-next/target-postgres/ddl';\nimport { createPostgresBuiltinCodecLookup } from './codec-lookup';\nimport { PostgresControlAdapter } from './control-adapter';\nimport { renderLoweredSql } from './sql-renderer';\nimport type { PostgresAdapterOptions, PostgresContract, PostgresLoweredStatement } from './types';\n\nconst defaultCapabilities = Object.freeze({\n postgres: {\n orderBy: true,\n limit: true,\n lateral: true,\n jsonAgg: true,\n returning: true,\n distinctOn: true,\n },\n sql: {\n enums: true,\n returning: true,\n defaultInInsert: true,\n lateral: true,\n scalarList: true,\n },\n});\n\nclass PostgresAdapterImpl\n implements Adapter<AnyQueryAst, PostgresContract, PostgresLoweredStatement>\n{\n // These fields make the adapter instance structurally compatible with RuntimeAdapterInstance<'sql', 'postgres'> without introducing a runtime-plane dependency.\n readonly familyId = 'sql' as const;\n readonly targetId = 'postgres' as const;\n\n readonly profile: AdapterProfile<'postgres'>;\n private readonly codecLookup: CodecRegistry;\n\n constructor(options?: PostgresAdapterOptions) {\n this.codecLookup = options?.codecLookup ?? createPostgresBuiltinCodecLookup();\n const controlAdapter = new PostgresControlAdapter(this.codecLookup);\n this.profile = Object.freeze({\n id: options?.profileId ?? 'postgres/default@1',\n target: 'postgres',\n capabilities: defaultCapabilities,\n readMarker: (queryable: SqlQueryable) =>\n controlAdapter.readMarkerDiscriminated(\n {\n familyId: 'sql',\n targetId: 'postgres',\n query: async <Row = Record<string, unknown>>(\n sql: string,\n params?: readonly unknown[],\n ) => {\n const result = await queryable.query<Row>(sql, params);\n return { rows: [...result.rows] };\n },\n close: async () => {},\n },\n APP_SPACE_ID,\n ),\n });\n }\n\n lower(\n ast: AnyQueryAst | PostgresDdlNode,\n context: LowererContext<PostgresContract>,\n ): PostgresLoweredStatement {\n if (isDdlNode(ast)) {\n throw new Error(\n 'lower() does not lower DDL on the runtime adapter — DDL lowering is a control-plane concern handled by the control adapter.',\n );\n }\n return renderLoweredSql(ast, context.contract, this.codecLookup);\n }\n}\n\n/** Codec-id lookup for bare-literal interpolations used by `fns.raw` on a postgres client. Contributed as the descriptor's static `rawCodecInferer` slot. */\nexport const postgresRawCodecInferer: RawCodecInferer = {\n inferCodec(value: RawSqlLiteral): string {\n switch (typeof value) {\n case 'number':\n return Number.isSafeInteger(value) && value % 1 === 0 ? 'pg/int4' : 'pg/float8';\n case 'bigint':\n return 'pg/int8';\n case 'string':\n return 'pg/text';\n case 'boolean':\n return 'pg/bool';\n case 'object':\n if (value instanceof Uint8Array) return 'pg/bytea';\n }\n throw new Error(\n 'unsupported JS value type for raw-SQL interpolation: wrap this value in `param(...)` with an explicit codec',\n );\n },\n};\n\nexport function createPostgresAdapter(options?: PostgresAdapterOptions) {\n return Object.freeze(new PostgresAdapterImpl(options));\n}\n"],"mappings":";;;;AAkBA,MAAM,sBAAsB,OAAO,OAAO;CACxC,UAAU;EACR,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACX,YAAY;CACd;CACA,KAAK;EACH,OAAO;EACP,WAAW;EACX,iBAAiB;EACjB,SAAS;EACT,YAAY;CACd;AACF,CAAC;AAED,IAAM,sBAAN,MAEA;CAEE,WAAoB;CACpB,WAAoB;CAEpB;CACA;CAEA,YAAY,SAAkC;EAC5C,KAAK,cAAc,SAAS,eAAe,iCAAiC;EAC5E,MAAM,iBAAiB,IAAI,uBAAuB,KAAK,WAAW;EAClE,KAAK,UAAU,OAAO,OAAO;GAC3B,IAAI,SAAS,aAAa;GAC1B,QAAQ;GACR,cAAc;GACd,aAAa,cACX,eAAe,wBACb;IACE,UAAU;IACV,UAAU;IACV,OAAO,OACL,KACA,WACG;KAEH,OAAO,EAAE,MAAM,CAAC,IAAG,MADE,UAAU,MAAW,KAAK,MAAM,EAAA,CAC3B,IAAI,EAAE;IAClC;IACA,OAAO,YAAY,CAAC;GACtB,GACA,YACF;EACJ,CAAC;CACH;CAEA,MACE,KACA,SAC0B;EAC1B,IAAI,UAAU,GAAG,GACf,MAAM,IAAI,MACR,6HACF;EAEF,OAAO,iBAAiB,KAAK,QAAQ,UAAU,KAAK,WAAW;CACjE;AACF;;AAGA,MAAa,0BAA2C,EACtD,WAAW,OAA8B;CACvC,QAAQ,OAAO,OAAf;EACE,KAAK,UACH,OAAO,OAAO,cAAc,KAAK,KAAK,QAAQ,MAAM,IAAI,YAAY;EACtE,KAAK,UACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,YAAY,OAAO;CAC5C;CACA,MAAM,IAAI,MACR,6GACF;AACF,EACF;AAEA,SAAgB,sBAAsB,SAAkC;CACtE,OAAO,OAAO,OAAO,IAAI,oBAAoB,OAAO,CAAC;AACvD"}
1
+ {"version":3,"file":"adapter-BaZsfXGA.mjs","names":[],"sources":["../src/core/adapter.ts"],"sourcesContent":["import type { CodecRegistry } from '@prisma-next/framework-components/codec';\nimport { APP_SPACE_ID } from '@prisma-next/framework-components/control';\nimport type {\n Adapter,\n AdapterProfile,\n AnyQueryAst,\n LowererContext,\n RawSqlLiteral,\n SqlQueryable,\n} from '@prisma-next/sql-relational-core/ast';\nimport { isDdlNode } from '@prisma-next/sql-relational-core/ast';\nimport type { RawCodecInferer } from '@prisma-next/sql-relational-core/expression';\nimport type { PostgresDdlNode } from '@prisma-next/target-postgres/ddl';\nimport { createPostgresBuiltinCodecLookup } from './codec-lookup';\nimport { PostgresControlAdapter } from './control-adapter';\nimport { renderLoweredSql } from './sql-renderer';\nimport type { PostgresAdapterOptions, PostgresContract, PostgresLoweredStatement } from './types';\n\nconst defaultCapabilities = Object.freeze({\n postgres: {\n orderBy: true,\n limit: true,\n lateral: true,\n jsonAgg: true,\n returning: true,\n distinctOn: true,\n },\n sql: {\n enums: true,\n returning: true,\n defaultInInsert: true,\n lateral: true,\n scalarList: true,\n },\n});\n\nclass PostgresAdapterImpl\n implements Adapter<AnyQueryAst, PostgresContract, PostgresLoweredStatement>\n{\n // These fields make the adapter instance structurally compatible with RuntimeAdapterInstance<'sql', 'postgres'> without introducing a runtime-plane dependency.\n readonly familyId = 'sql' as const;\n readonly targetId = 'postgres' as const;\n\n readonly profile: AdapterProfile<'postgres'>;\n private readonly codecLookup: CodecRegistry;\n\n constructor(options?: PostgresAdapterOptions) {\n this.codecLookup = options?.codecLookup ?? createPostgresBuiltinCodecLookup();\n const controlAdapter = new PostgresControlAdapter(this.codecLookup);\n this.profile = Object.freeze({\n id: options?.profileId ?? 'postgres/default@1',\n target: 'postgres',\n capabilities: defaultCapabilities,\n readMarker: (queryable: SqlQueryable) =>\n controlAdapter.readMarkerDiscriminated(\n {\n familyId: 'sql',\n targetId: 'postgres',\n query: async <Row = Record<string, unknown>>(\n sql: string,\n params?: readonly unknown[],\n ) => {\n const result = await queryable.query<Row>(sql, params);\n return { rows: [...result.rows] };\n },\n close: async () => {},\n },\n APP_SPACE_ID,\n ),\n });\n }\n\n lower(\n ast: AnyQueryAst | PostgresDdlNode,\n context: LowererContext<PostgresContract>,\n ): PostgresLoweredStatement {\n if (isDdlNode(ast)) {\n throw new Error(\n 'lower() does not lower DDL on the runtime adapter — DDL lowering is a control-plane concern handled by the control adapter.',\n );\n }\n return renderLoweredSql(ast, context.contract, this.codecLookup);\n }\n}\n\n/** Codec-id lookup for bare-literal interpolations used by `fns.raw` on a postgres client. Contributed as the descriptor's static `rawCodecInferer` slot. */\nexport const postgresRawCodecInferer: RawCodecInferer = {\n inferCodec(value: RawSqlLiteral): string {\n switch (typeof value) {\n case 'number':\n return Number.isSafeInteger(value) && value % 1 === 0 ? 'pg/int4' : 'pg/float8';\n case 'bigint':\n return 'pg/int8';\n case 'string':\n return 'pg/text';\n case 'boolean':\n return 'pg/bool';\n case 'object':\n if (value instanceof Uint8Array) return 'pg/bytea';\n }\n throw new Error(\n 'unsupported JS value type for raw-SQL interpolation: wrap this value in `param(...)` with an explicit codec',\n );\n },\n};\n\nexport function createPostgresAdapter(options?: PostgresAdapterOptions) {\n return Object.freeze(new PostgresAdapterImpl(options));\n}\n"],"mappings":";;;;AAkBA,MAAM,sBAAsB,OAAO,OAAO;CACxC,UAAU;EACR,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACX,YAAY;CACd;CACA,KAAK;EACH,OAAO;EACP,WAAW;EACX,iBAAiB;EACjB,SAAS;EACT,YAAY;CACd;AACF,CAAC;AAED,IAAM,sBAAN,MAEA;CAEE,WAAoB;CACpB,WAAoB;CAEpB;CACA;CAEA,YAAY,SAAkC;EAC5C,KAAK,cAAc,SAAS,eAAe,iCAAiC;EAC5E,MAAM,iBAAiB,IAAI,uBAAuB,KAAK,WAAW;EAClE,KAAK,UAAU,OAAO,OAAO;GAC3B,IAAI,SAAS,aAAa;GAC1B,QAAQ;GACR,cAAc;GACd,aAAa,cACX,eAAe,wBACb;IACE,UAAU;IACV,UAAU;IACV,OAAO,OACL,KACA,WACG;KAEH,OAAO,EAAE,MAAM,CAAC,IAAG,MADE,UAAU,MAAW,KAAK,MAAM,EAAA,CAC3B,IAAI,EAAE;IAClC;IACA,OAAO,YAAY,CAAC;GACtB,GACA,YACF;EACJ,CAAC;CACH;CAEA,MACE,KACA,SAC0B;EAC1B,IAAI,UAAU,GAAG,GACf,MAAM,IAAI,MACR,6HACF;EAEF,OAAO,iBAAiB,KAAK,QAAQ,UAAU,KAAK,WAAW;CACjE;AACF;;AAGA,MAAa,0BAA2C,EACtD,WAAW,OAA8B;CACvC,QAAQ,OAAO,OAAf;EACE,KAAK,UACH,OAAO,OAAO,cAAc,KAAK,KAAK,QAAQ,MAAM,IAAI,YAAY;EACtE,KAAK,UACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,UACH,IAAI,iBAAiB,YAAY,OAAO;CAC5C;CACA,MAAM,IAAI,MACR,6GACF;AACF,EACF;AAEA,SAAgB,sBAAsB,SAAkC;CACtE,OAAO,OAAO,OAAO,IAAI,oBAAoB,OAAO,CAAC;AACvD"}
@@ -1,8 +1,7 @@
1
- import { c as PostgresContract, l as PostgresLoweredStatement, s as PostgresAdapterOptions } from "./types-DkGeLfUp.mjs";
1
+ import { c as PostgresContract, l as PostgresLoweredStatement, s as PostgresAdapterOptions } from "./types-DyNEvnRB.mjs";
2
2
  import { Adapter, AdapterProfile, AnyQueryAst, LowererContext } from "@prisma-next/sql-relational-core/ast";
3
3
  import { RawCodecInferer } from "@prisma-next/sql-relational-core/expression";
4
4
  import { PostgresDdlNode } from "@prisma-next/target-postgres/ddl";
5
-
6
5
  //#region src/core/adapter.d.ts
7
6
  declare class PostgresAdapterImpl implements Adapter<AnyQueryAst, PostgresContract, PostgresLoweredStatement> {
8
7
  readonly familyId: "sql";
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"mappings":";;;;;;cAoCM,mBAAA,YACO,OAAA,CAAQ,WAAA,EAAa,gBAAA,EAAkB,wBAAA;EAAA,SAGzC,QAAA;EAAA,SACA,QAAA;EAAA,SAEA,OAAA,EAAS,cAAA;EAAA,iBACD,WAAA;cAEL,OAAA,GAAU,sBAAA;EA0BtB,KAAA,CACE,GAAA,EAAK,WAAA,GAAc,eAAA,EACnB,OAAA,EAAS,cAAA,CAAe,gBAAA,IACvB,wBAAA;AAAA;;cAWQ,uBAAA,EAAyB,eAkBrC;AAAA,iBAEe,qBAAA,CAAsB,OAAA,GAAU,sBAAA,GAAsB,QAAA,CAAA,mBAAA"}
1
+ {"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"mappings":";;;;;cAoCM,+BACO,QAAQ,aAAa,kBAAkB;WAGzC;WACA;WAEA,SAAS;mBACD;cAEL,UAAU;EA0BtB,MACE,KAAK,cAAc,iBACnB,SAAS,eAAe,oBACvB;;;cAWQ,yBAAyB;iBAoBtB,sBAAsB,UAAU,yBAAsB,SAAA"}
package/dist/adapter.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as postgresRawCodecInferer, t as createPostgresAdapter } from "./adapter-CBYnmMf1.mjs";
1
+ import { n as postgresRawCodecInferer, t as createPostgresAdapter } from "./adapter-BaZsfXGA.mjs";
2
2
  export { createPostgresAdapter, postgresRawCodecInferer };
@@ -1,5 +1,4 @@
1
1
  import { ColumnTypeDescriptor } from "@prisma-next/framework-components/codec";
2
-
3
2
  //#region src/exports/column-types.d.ts
4
3
  declare const textColumn: {
5
4
  readonly codecId: "pg/text@1";
@@ -1 +1 @@
1
- {"version":3,"file":"column-types.d.mts","names":[],"sources":["../src/exports/column-types.ts"],"mappings":";;;cA8Ba,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,iBAEzB,UAAA,CAAW,MAAA,WAAiB,oBAAoB;EAAA,SACrD,UAAA;IAAA,SAAuB,MAAA;EAAA;AAAA;AAAA,iBASlB,aAAA,CAAc,MAAA,WAAiB,oBAAoB;EAAA,SACxD,UAAA;IAAA,SAAuB,MAAA;EAAA;AAAA;AAAA,cASrB,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,cAE5B,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,cAE5B,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,cAE5B,YAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,cAE5B,YAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,iBAEzB,aAAA,CACd,SAAA,UACA,KAAA,YACC,oBAAoB;EAAA,SACZ,UAAA;IAAA,SAAuB,SAAA;IAAA,SAA4B,KAAA;EAAA;AAAA;AAAA,cASjD,eAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,cAE5B,iBAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,iBAEzB,UAAA,CAAW,SAAA,YAAqB,oBAAoB;EAAA,SACzD,UAAA;IAAA,SAAwB,SAAA;EAAA;AAAA;AAAA,iBASnB,YAAA,CAAa,SAAA,YAAqB,oBAAoB;EAAA,SAC3D,UAAA;IAAA,SAAwB,SAAA;EAAA;AAAA;AAAA,cAStB,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,iBAEzB,SAAA,CAAU,MAAA,WAAiB,oBAAoB;EAAA,SACpD,UAAA;IAAA,SAAuB,MAAA;EAAA;AAAA;AAAA,iBASlB,YAAA,CAAa,MAAA,WAAiB,oBAAoB;EAAA,SACvD,UAAA;IAAA,SAAuB,MAAA;EAAA;AAAA;;;;;;cAcrB,WAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;AAAA,iBAEzB,cAAA,CAAe,SAAA,YAAqB,oBAAoB;EAAA,SAC7D,UAAA;IAAA,SAAwB,SAAA;EAAA;AAAA;;;AA7CS;AAS5C;;cAkDa,UAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA;;;;cAK5B,WAAA;EAAA,SAG4B,OAAA;EAAA,SAAA,UAAA;AAAA"}
1
+ {"version":3,"file":"column-types.d.mts","names":[],"sources":["../src/exports/column-types.ts"],"mappings":";;cA8Ba;WAAA;WAAA;;iBAKG,WAAW,iBAAiB;WACjC;aAAuB;;;iBASlB,cAAc,iBAAiB;WACpC;aAAuB;;;cASrB;WAAA;WAAA;;cAKA;WAAA;WAAA;;cAKA;WAAA;WAAA;;cAKA;WAAA;WAAA;;cAKA;WAAA;WAAA;;iBAKG,cACd,mBACA,iBACC;WACQ;aAAuB;aAA4B;;;cASjD;WAAA;WAAA;;cAKA;WAAA;WAAA;;iBAKG,WAAW,qBAAqB;WACrC;aAAwB;;;iBASnB,aAAa,qBAAqB;WACvC;aAAwB;;;cAStB;WAAA;WAAA;;iBAKG,UAAU,iBAAiB;WAChC;aAAuB;;;iBASlB,aAAa,iBAAiB;WACnC;aAAuB;;;;;;;;cAcrB;WAAA;WAAA;;iBAKG,eAAe,qBAAqB;WACzC;aAAwB;;;;;;;;cActB;WAAA;WAAA;;;;;cAQA;WAAA;WAAA"}
@@ -999,7 +999,8 @@ var PostgresControlAdapter = class {
999
999
  numeric_precision,
1000
1000
  numeric_scale,
1001
1001
  column_default,
1002
- format_type(a.atttypid, a.atttypmod) AS formatted_type
1002
+ format_type(a.atttypid, a.atttypmod) AS formatted_type,
1003
+ a.attidentity
1003
1004
  FROM information_schema.columns c
1004
1005
  JOIN pg_catalog.pg_class cl
1005
1006
  ON cl.relname = c.table_name
@@ -1014,64 +1015,74 @@ var PostgresControlAdapter = class {
1014
1015
  WHERE c.table_schema = $1
1015
1016
  ORDER BY c.table_name, c.ordinal_position`, [schema]);
1016
1017
  const pkResult = await driver.query(`SELECT
1017
- tc.table_name,
1018
- tc.constraint_name,
1019
- kcu.column_name,
1020
- kcu.ordinal_position
1021
- FROM information_schema.table_constraints tc
1022
- JOIN information_schema.key_column_usage kcu
1023
- ON tc.constraint_name = kcu.constraint_name
1024
- AND tc.table_schema = kcu.table_schema
1025
- AND tc.table_name = kcu.table_name
1026
- WHERE tc.table_schema = $1
1027
- AND tc.constraint_type = 'PRIMARY KEY'
1028
- ORDER BY tc.table_name, kcu.ordinal_position`, [schema]);
1018
+ cl.relname AS table_name,
1019
+ con.conname AS constraint_name,
1020
+ a.attname AS column_name,
1021
+ k.ord AS ordinal_position
1022
+ FROM pg_catalog.pg_constraint con
1023
+ JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid
1024
+ JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace
1025
+ JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true
1026
+ JOIN pg_catalog.pg_attribute a
1027
+ ON a.attrelid = con.conrelid
1028
+ AND a.attnum = k.attnum
1029
+ WHERE ns.nspname = $1
1030
+ AND con.contype = 'p'
1031
+ ORDER BY cl.relname, k.ord`, [schema]);
1029
1032
  const fkResult = await driver.query(`SELECT
1030
- tc.table_name,
1031
- tc.constraint_name,
1032
- kcu.column_name,
1033
- kcu.ordinal_position,
1033
+ cl.relname AS table_name,
1034
+ con.conname AS constraint_name,
1035
+ a.attname AS column_name,
1036
+ k.ord AS ordinal_position,
1034
1037
  ref_ns.nspname AS referenced_table_schema,
1035
1038
  ref_cl.relname AS referenced_table_name,
1036
1039
  ref_att.attname AS referenced_column_name,
1037
- rc.delete_rule,
1038
- rc.update_rule
1039
- FROM information_schema.table_constraints tc
1040
- JOIN information_schema.key_column_usage kcu
1041
- ON tc.constraint_name = kcu.constraint_name
1042
- AND tc.table_schema = kcu.table_schema
1043
- AND tc.table_name = kcu.table_name
1044
- JOIN pg_catalog.pg_constraint pgc
1045
- ON pgc.conname = tc.constraint_name
1046
- AND pgc.connamespace = (
1047
- SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = tc.table_schema
1048
- )
1040
+ CASE con.confdeltype
1041
+ WHEN 'a' THEN 'NO ACTION'
1042
+ WHEN 'r' THEN 'RESTRICT'
1043
+ WHEN 'c' THEN 'CASCADE'
1044
+ WHEN 'n' THEN 'SET NULL'
1045
+ WHEN 'd' THEN 'SET DEFAULT'
1046
+ END AS delete_rule,
1047
+ CASE con.confupdtype
1048
+ WHEN 'a' THEN 'NO ACTION'
1049
+ WHEN 'r' THEN 'RESTRICT'
1050
+ WHEN 'c' THEN 'CASCADE'
1051
+ WHEN 'n' THEN 'SET NULL'
1052
+ WHEN 'd' THEN 'SET DEFAULT'
1053
+ END AS update_rule
1054
+ FROM pg_catalog.pg_constraint con
1055
+ JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid
1056
+ JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace
1057
+ JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true
1058
+ JOIN pg_catalog.pg_attribute a
1059
+ ON a.attrelid = con.conrelid
1060
+ AND a.attnum = k.attnum
1049
1061
  JOIN pg_catalog.pg_class ref_cl
1050
- ON ref_cl.oid = pgc.confrelid
1062
+ ON ref_cl.oid = con.confrelid
1051
1063
  JOIN pg_catalog.pg_namespace ref_ns
1052
1064
  ON ref_ns.oid = ref_cl.relnamespace
1053
1065
  JOIN pg_catalog.pg_attribute ref_att
1054
- ON ref_att.attrelid = pgc.confrelid
1055
- AND ref_att.attnum = pgc.confkey[kcu.ordinal_position]
1056
- JOIN information_schema.referential_constraints rc
1057
- ON rc.constraint_name = tc.constraint_name
1058
- AND rc.constraint_schema = tc.table_schema
1059
- WHERE tc.table_schema = $1
1060
- AND tc.constraint_type = 'FOREIGN KEY'
1061
- ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position`, [schema]);
1066
+ ON ref_att.attrelid = con.confrelid
1067
+ AND ref_att.attnum = con.confkey[k.ord]
1068
+ WHERE ns.nspname = $1
1069
+ AND con.contype = 'f'
1070
+ ORDER BY cl.relname, con.conname, k.ord`, [schema]);
1062
1071
  const uniqueResult = await driver.query(`SELECT
1063
- tc.table_name,
1064
- tc.constraint_name,
1065
- kcu.column_name,
1066
- kcu.ordinal_position
1067
- FROM information_schema.table_constraints tc
1068
- JOIN information_schema.key_column_usage kcu
1069
- ON tc.constraint_name = kcu.constraint_name
1070
- AND tc.table_schema = kcu.table_schema
1071
- AND tc.table_name = kcu.table_name
1072
- WHERE tc.table_schema = $1
1073
- AND tc.constraint_type = 'UNIQUE'
1074
- ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position`, [schema]);
1072
+ cl.relname AS table_name,
1073
+ con.conname AS constraint_name,
1074
+ a.attname AS column_name,
1075
+ k.ord AS ordinal_position
1076
+ FROM pg_catalog.pg_constraint con
1077
+ JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid
1078
+ JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace
1079
+ JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true
1080
+ JOIN pg_catalog.pg_attribute a
1081
+ ON a.attrelid = con.conrelid
1082
+ AND a.attnum = k.attnum
1083
+ WHERE ns.nspname = $1
1084
+ AND con.contype = 'u'
1085
+ ORDER BY cl.relname, con.conname, k.ord`, [schema]);
1075
1086
  const indexResult = await driver.query(`SELECT
1076
1087
  i.tablename,
1077
1088
  i.indexname,
@@ -1092,10 +1103,9 @@ var PostgresControlAdapter = class {
1092
1103
  WHERE i.schemaname = $1
1093
1104
  AND NOT EXISTS (
1094
1105
  SELECT 1
1095
- FROM information_schema.table_constraints tc
1096
- WHERE tc.table_schema = $1
1097
- AND tc.table_name = i.tablename
1098
- AND tc.constraint_name = i.indexname
1106
+ FROM pg_catalog.pg_constraint con
1107
+ WHERE con.conindid = ic.oid
1108
+ AND con.contype IN ('p', 'u', 'x')
1099
1109
  )
1100
1110
  ORDER BY i.tablename, i.indexname, k.ord`, [schema]);
1101
1111
  const checkResult = await driver.query(`SELECT
@@ -1141,6 +1151,10 @@ var PostgresControlAdapter = class {
1141
1151
  if (many) nativeType = normalizeSchemaNativeType(nativeType.slice(0, -2));
1142
1152
  const resolvedNativeType = `${normalizeSchemaNativeType(nativeType)}${many ? "[]" : ""}`;
1143
1153
  const rawDefault = colRow.column_default ?? void 0;
1154
+ const resolvedDefault = colRow.attidentity === "a" || colRow.attidentity === "d" ? {
1155
+ kind: "function",
1156
+ expression: "autoincrement()"
1157
+ } : rawDefault !== void 0 ? parsePostgresDefault(rawDefault, resolvedNativeType) : void 0;
1144
1158
  columns[colRow.column_name] = {
1145
1159
  name: colRow.column_name,
1146
1160
  nativeType,
@@ -1148,7 +1162,7 @@ var PostgresControlAdapter = class {
1148
1162
  ...ifDefined("default", rawDefault),
1149
1163
  ...ifDefined("many", many),
1150
1164
  resolvedNativeType,
1151
- ...ifDefined("resolvedDefault", rawDefault !== void 0 ? parsePostgresDefault(rawDefault, resolvedNativeType) : void 0)
1165
+ ...ifDefined("resolvedDefault", resolvedDefault)
1152
1166
  };
1153
1167
  }
1154
1168
  const pkRows = [...pksByTable.get(tableName) ?? []];
@@ -1776,4 +1790,4 @@ async function pgRenderDdlExecuteRequest(ast, codecLookup) {
1776
1790
  //#endregion
1777
1791
  export { renderLoweredSql as n, createPostgresBuiltinCodecLookup as r, PostgresControlAdapter as t };
1778
1792
 
1779
- //# sourceMappingURL=control-adapter-Di47mobV.mjs.map
1793
+ //# sourceMappingURL=control-adapter-B6IM_oTR.mjs.map