@prisma-next/adapter-postgres 0.15.0 → 0.16.0-dev.2
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.
- package/dist/{adapter-CssyjkaR.mjs → adapter-BaZsfXGA.mjs} +2 -2
- package/dist/{adapter-CssyjkaR.mjs.map → adapter-BaZsfXGA.mjs.map} +1 -1
- package/dist/adapter.d.mts +1 -2
- package/dist/adapter.d.mts.map +1 -1
- package/dist/adapter.mjs +1 -1
- package/dist/column-types.d.mts +0 -1
- package/dist/column-types.d.mts.map +1 -1
- package/dist/{control-adapter-w2BFxQ--.mjs → control-adapter-B6IM_oTR.mjs} +125 -62
- package/dist/control-adapter-B6IM_oTR.mjs.map +1 -0
- package/dist/control.d.mts +0 -1
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +1 -1
- package/dist/operation-types.d.mts +0 -1
- package/dist/operation-types.d.mts.map +1 -1
- package/dist/runtime.d.mts +1 -2
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/{types-DkGeLfUp.d.mts → types-DyNEvnRB.d.mts} +1 -2
- package/dist/types-DyNEvnRB.d.mts.map +1 -0
- package/dist/types.d.mts +1 -1
- package/package.json +24 -24
- package/src/core/control-adapter.ts +154 -68
- package/dist/control-adapter-w2BFxQ--.mjs.map +0 -1
- package/dist/types-DkGeLfUp.d.mts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as renderLoweredSql, r as createPostgresBuiltinCodecLookup, t as PostgresControlAdapter } from "./control-adapter-
|
|
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-
|
|
66
|
+
//# sourceMappingURL=adapter-BaZsfXGA.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-
|
|
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"}
|
package/dist/adapter.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { c as PostgresContract, l as PostgresLoweredStatement, s as PostgresAdapterOptions } from "./types-
|
|
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";
|
package/dist/adapter.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"mappings":"
|
|
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-
|
|
1
|
+
import { n as postgresRawCodecInferer, t as createPostgresAdapter } from "./adapter-BaZsfXGA.mjs";
|
|
2
2
|
export { createPostgresAdapter, postgresRawCodecInferer };
|
package/dist/column-types.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-types.d.mts","names":[],"sources":["../src/exports/column-types.ts"],"mappings":"
|
|
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"}
|
|
@@ -5,12 +5,13 @@ import { parseMarkerRowSafely, rethrowMarkerReadError, withMarkerReadErrorHandli
|
|
|
5
5
|
import { parseContractMarkerRow } from "@prisma-next/family-sql/verify";
|
|
6
6
|
import { UNBOUND_NAMESPACE_ID } from "@prisma-next/framework-components/ir";
|
|
7
7
|
import { REFERENTIAL_ACTION_SQL } from "@prisma-next/sql-contract/referential-action-sql";
|
|
8
|
+
import { RelationalSchemaNodeKind } from "@prisma-next/sql-schema-ir/types";
|
|
8
9
|
import { buildControlTableBootstrapQueries, buildSignMarkerBootstrapQueries, int4, int8, jsonb, pgTable, text, textArray, timestamptz } from "@prisma-next/target-postgres/contract-free";
|
|
9
10
|
import { parsePostgresDefault } from "@prisma-next/target-postgres/default-normalizer";
|
|
10
11
|
import { normalizeSchemaNativeType } from "@prisma-next/target-postgres/native-type-normalizer";
|
|
11
12
|
import { parseRlsPolicyWireName } from "@prisma-next/target-postgres/rls-canonicalize";
|
|
12
13
|
import { escapeLiteral, quoteIdentifier } from "@prisma-next/target-postgres/sql-utils";
|
|
13
|
-
import { PostgresDatabaseSchemaNode, PostgresNamespaceSchemaNode, PostgresNativeEnumSchemaNode, PostgresPolicySchemaNode, PostgresRoleSchemaNode, PostgresTableSchemaNode } from "@prisma-next/target-postgres/types";
|
|
14
|
+
import { PostgresDatabaseSchemaNode, PostgresNamespaceSchemaNode, PostgresNativeEnumSchemaNode, PostgresPolicySchemaNode, PostgresRoleSchemaNode, PostgresSchemaNodeKind, PostgresTableSchemaNode } from "@prisma-next/target-postgres/types";
|
|
14
15
|
import { blindCast } from "@prisma-next/utils/casts";
|
|
15
16
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
16
17
|
import { createAstCodecRegistry, deriveParamMetadata, encodeParamsWithMetadata } from "@prisma-next/sql-runtime";
|
|
@@ -998,7 +999,8 @@ var PostgresControlAdapter = class {
|
|
|
998
999
|
numeric_precision,
|
|
999
1000
|
numeric_scale,
|
|
1000
1001
|
column_default,
|
|
1001
|
-
format_type(a.atttypid, a.atttypmod) AS formatted_type
|
|
1002
|
+
format_type(a.atttypid, a.atttypmod) AS formatted_type,
|
|
1003
|
+
a.attidentity
|
|
1002
1004
|
FROM information_schema.columns c
|
|
1003
1005
|
JOIN pg_catalog.pg_class cl
|
|
1004
1006
|
ON cl.relname = c.table_name
|
|
@@ -1013,64 +1015,74 @@ var PostgresControlAdapter = class {
|
|
|
1013
1015
|
WHERE c.table_schema = $1
|
|
1014
1016
|
ORDER BY c.table_name, c.ordinal_position`, [schema]);
|
|
1015
1017
|
const pkResult = await driver.query(`SELECT
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
FROM
|
|
1021
|
-
JOIN
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
AND
|
|
1027
|
-
|
|
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]);
|
|
1028
1032
|
const fkResult = await driver.query(`SELECT
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
+
cl.relname AS table_name,
|
|
1034
|
+
con.conname AS constraint_name,
|
|
1035
|
+
a.attname AS column_name,
|
|
1036
|
+
k.ord AS ordinal_position,
|
|
1033
1037
|
ref_ns.nspname AS referenced_table_schema,
|
|
1034
1038
|
ref_cl.relname AS referenced_table_name,
|
|
1035
1039
|
ref_att.attname AS referenced_column_name,
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
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
|
|
1048
1061
|
JOIN pg_catalog.pg_class ref_cl
|
|
1049
|
-
ON ref_cl.oid =
|
|
1062
|
+
ON ref_cl.oid = con.confrelid
|
|
1050
1063
|
JOIN pg_catalog.pg_namespace ref_ns
|
|
1051
1064
|
ON ref_ns.oid = ref_cl.relnamespace
|
|
1052
1065
|
JOIN pg_catalog.pg_attribute ref_att
|
|
1053
|
-
ON ref_att.attrelid =
|
|
1054
|
-
AND ref_att.attnum =
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
WHERE tc.table_schema = $1
|
|
1059
|
-
AND tc.constraint_type = 'FOREIGN KEY'
|
|
1060
|
-
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]);
|
|
1061
1071
|
const uniqueResult = await driver.query(`SELECT
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
FROM
|
|
1067
|
-
JOIN
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
AND
|
|
1073
|
-
|
|
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]);
|
|
1074
1086
|
const indexResult = await driver.query(`SELECT
|
|
1075
1087
|
i.tablename,
|
|
1076
1088
|
i.indexname,
|
|
@@ -1091,10 +1103,9 @@ var PostgresControlAdapter = class {
|
|
|
1091
1103
|
WHERE i.schemaname = $1
|
|
1092
1104
|
AND NOT EXISTS (
|
|
1093
1105
|
SELECT 1
|
|
1094
|
-
FROM
|
|
1095
|
-
WHERE
|
|
1096
|
-
AND
|
|
1097
|
-
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')
|
|
1098
1109
|
)
|
|
1099
1110
|
ORDER BY i.tablename, i.indexname, k.ord`, [schema]);
|
|
1100
1111
|
const checkResult = await driver.query(`SELECT
|
|
@@ -1140,6 +1151,10 @@ var PostgresControlAdapter = class {
|
|
|
1140
1151
|
if (many) nativeType = normalizeSchemaNativeType(nativeType.slice(0, -2));
|
|
1141
1152
|
const resolvedNativeType = `${normalizeSchemaNativeType(nativeType)}${many ? "[]" : ""}`;
|
|
1142
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;
|
|
1143
1158
|
columns[colRow.column_name] = {
|
|
1144
1159
|
name: colRow.column_name,
|
|
1145
1160
|
nativeType,
|
|
@@ -1147,14 +1162,15 @@ var PostgresControlAdapter = class {
|
|
|
1147
1162
|
...ifDefined("default", rawDefault),
|
|
1148
1163
|
...ifDefined("many", many),
|
|
1149
1164
|
resolvedNativeType,
|
|
1150
|
-
...ifDefined("resolvedDefault",
|
|
1165
|
+
...ifDefined("resolvedDefault", resolvedDefault)
|
|
1151
1166
|
};
|
|
1152
1167
|
}
|
|
1153
1168
|
const pkRows = [...pksByTable.get(tableName) ?? []];
|
|
1154
1169
|
const primaryKeyColumns = pkRows.sort((a, b) => a.ordinal_position - b.ordinal_position).map((row) => row.column_name);
|
|
1155
1170
|
const primaryKey = primaryKeyColumns.length > 0 ? {
|
|
1156
1171
|
columns: primaryKeyColumns,
|
|
1157
|
-
...pkRows[0]?.constraint_name ? { name: pkRows[0].constraint_name } : {}
|
|
1172
|
+
...pkRows[0]?.constraint_name ? { name: pkRows[0].constraint_name } : {},
|
|
1173
|
+
dependsOn: postgresColumnDependsOn(schema, tableName, primaryKeyColumns)
|
|
1158
1174
|
} : void 0;
|
|
1159
1175
|
const foreignKeysMap = /* @__PURE__ */ new Map();
|
|
1160
1176
|
for (const fkRow of fksByTable.get(tableName) ?? []) {
|
|
@@ -1179,7 +1195,8 @@ var PostgresControlAdapter = class {
|
|
|
1179
1195
|
referencedColumns: Object.freeze([...fk.referencedColumns]),
|
|
1180
1196
|
name: fk.name,
|
|
1181
1197
|
...ifDefined("onDelete", mapReferentialAction(fk.deleteRule)),
|
|
1182
|
-
...ifDefined("onUpdate", mapReferentialAction(fk.updateRule))
|
|
1198
|
+
...ifDefined("onUpdate", mapReferentialAction(fk.updateRule)),
|
|
1199
|
+
dependsOn: [postgresTableDependsOn(fk.referencedSchema, fk.referencedTable), ...postgresColumnDependsOn(schema, tableName, fk.columns)]
|
|
1183
1200
|
}));
|
|
1184
1201
|
const pkConstraints = pkConstraintsByTable.get(tableName) ?? /* @__PURE__ */ new Set();
|
|
1185
1202
|
const uniquesMap = /* @__PURE__ */ new Map();
|
|
@@ -1194,7 +1211,8 @@ var PostgresControlAdapter = class {
|
|
|
1194
1211
|
}
|
|
1195
1212
|
const uniques = Array.from(uniquesMap.values()).map((uq) => ({
|
|
1196
1213
|
columns: Object.freeze([...uq.columns]),
|
|
1197
|
-
name: uq.name
|
|
1214
|
+
name: uq.name,
|
|
1215
|
+
dependsOn: postgresColumnDependsOn(schema, tableName, uq.columns)
|
|
1198
1216
|
}));
|
|
1199
1217
|
const indexesMap = /* @__PURE__ */ new Map();
|
|
1200
1218
|
const indexNamesWithExpressionKey = /* @__PURE__ */ new Set();
|
|
@@ -1229,7 +1247,8 @@ var PostgresControlAdapter = class {
|
|
|
1229
1247
|
name: idx.name,
|
|
1230
1248
|
unique: idx.unique,
|
|
1231
1249
|
...idx.type !== void 0 && { type: idx.type },
|
|
1232
|
-
...idx.options !== void 0 && { options: idx.options }
|
|
1250
|
+
...idx.options !== void 0 && { options: idx.options },
|
|
1251
|
+
dependsOn: postgresColumnDependsOn(schema, tableName, idx.columns)
|
|
1233
1252
|
}));
|
|
1234
1253
|
const checksForTable = [];
|
|
1235
1254
|
for (const checkRow of checksByTable.get(tableName) ?? []) {
|
|
@@ -1281,7 +1300,8 @@ var PostgresControlAdapter = class {
|
|
|
1281
1300
|
roles: policyRoles,
|
|
1282
1301
|
...row.qual !== null ? { using: row.qual } : {},
|
|
1283
1302
|
...row.with_check !== null ? { withCheck: row.with_check } : {},
|
|
1284
|
-
permissive
|
|
1303
|
+
permissive,
|
|
1304
|
+
dependsOn: [postgresTableDependsOn(row.schemaname, row.tablename), ...policyRoles.map(postgresRoleDependsOn)]
|
|
1285
1305
|
});
|
|
1286
1306
|
const list = policiesByTable.get(row.tablename) ?? [];
|
|
1287
1307
|
list.push(policy);
|
|
@@ -1447,6 +1467,49 @@ function mapReferentialAction(rule) {
|
|
|
1447
1467
|
return mapped;
|
|
1448
1468
|
}
|
|
1449
1469
|
/**
|
|
1470
|
+
* A FK/policy dependency chain, mirroring the shape the expected-side
|
|
1471
|
+
* derivation stamps (`contractToPostgresDatabaseSchemaNode`): the database
|
|
1472
|
+
* root's fixed sentinel id, then the namespace, then the table.
|
|
1473
|
+
*/
|
|
1474
|
+
function postgresTableDependsOn(namespaceId, tableName) {
|
|
1475
|
+
return [
|
|
1476
|
+
{
|
|
1477
|
+
nodeKind: PostgresSchemaNodeKind.database,
|
|
1478
|
+
id: "database"
|
|
1479
|
+
},
|
|
1480
|
+
{
|
|
1481
|
+
nodeKind: PostgresSchemaNodeKind.namespace,
|
|
1482
|
+
id: namespaceId
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
nodeKind: PostgresSchemaNodeKind.table,
|
|
1486
|
+
id: tableName
|
|
1487
|
+
}
|
|
1488
|
+
];
|
|
1489
|
+
}
|
|
1490
|
+
/** A policy's dependency chain onto one of the roles it grants to. */
|
|
1491
|
+
function postgresRoleDependsOn(role) {
|
|
1492
|
+
return [{
|
|
1493
|
+
nodeKind: PostgresSchemaNodeKind.database,
|
|
1494
|
+
id: "database"
|
|
1495
|
+
}, {
|
|
1496
|
+
nodeKind: PostgresSchemaNodeKind.role,
|
|
1497
|
+
id: role
|
|
1498
|
+
}];
|
|
1499
|
+
}
|
|
1500
|
+
/**
|
|
1501
|
+
* The chains from a table-child object (foreign key, index, unique, primary
|
|
1502
|
+
* key) to each of the own columns it is built on — the introspection-side
|
|
1503
|
+
* mirror of `contractToPostgresDatabaseSchemaNode`'s `columnDependsOn`. An
|
|
1504
|
+
* object is dropped before the columns it covers.
|
|
1505
|
+
*/
|
|
1506
|
+
function postgresColumnDependsOn(namespaceId, tableName, columns) {
|
|
1507
|
+
return columns.map((column) => [...postgresTableDependsOn(namespaceId, tableName), {
|
|
1508
|
+
nodeKind: RelationalSchemaNodeKind.column,
|
|
1509
|
+
id: `column:${column}`
|
|
1510
|
+
}]);
|
|
1511
|
+
}
|
|
1512
|
+
/**
|
|
1450
1513
|
* Groups an array of objects by a specified key.
|
|
1451
1514
|
* Returns a Map for O(1) lookup by group key.
|
|
1452
1515
|
*/
|
|
@@ -1727,4 +1790,4 @@ async function pgRenderDdlExecuteRequest(ast, codecLookup) {
|
|
|
1727
1790
|
//#endregion
|
|
1728
1791
|
export { renderLoweredSql as n, createPostgresBuiltinCodecLookup as r, PostgresControlAdapter as t };
|
|
1729
1792
|
|
|
1730
|
-
//# sourceMappingURL=control-adapter-
|
|
1793
|
+
//# sourceMappingURL=control-adapter-B6IM_oTR.mjs.map
|