@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.
- package/dist/{adapter-CBYnmMf1.mjs → adapter-BaZsfXGA.mjs} +2 -2
- package/dist/{adapter-CBYnmMf1.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-Di47mobV.mjs → control-adapter-B6IM_oTR.mjs} +70 -56
- 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 +102 -67
- package/dist/control-adapter-Di47mobV.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"}
|
|
@@ -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
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
FROM
|
|
1022
|
-
JOIN
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
AND
|
|
1028
|
-
|
|
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
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
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
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
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 =
|
|
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 =
|
|
1055
|
-
AND ref_att.attnum =
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
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
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
FROM
|
|
1068
|
-
JOIN
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
AND
|
|
1074
|
-
|
|
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
|
|
1096
|
-
WHERE
|
|
1097
|
-
AND
|
|
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",
|
|
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-
|
|
1793
|
+
//# sourceMappingURL=control-adapter-B6IM_oTR.mjs.map
|