@prisma-next/adapter-postgres 0.5.0-dev.83 → 0.5.0-dev.85

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.
@@ -27,21 +27,26 @@ var PostgresAdapterImpl = class {
27
27
  id: options?.profileId ?? "postgres/default@1",
28
28
  target: "postgres",
29
29
  capabilities: defaultCapabilities,
30
- readMarkerStatement: () => ({
31
- sql: "select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1",
32
- params: [APP_SPACE_ID]
33
- }),
34
- parseMarkerRow: (row) => parseContractMarkerRow(row)
30
+ readMarker: (queryable) => readPostgresMarker(queryable)
35
31
  });
36
32
  }
37
33
  lower(ast, context) {
38
34
  return renderLoweredSql(ast, context.contract, this.codecLookup);
39
35
  }
40
36
  };
37
+ async function readPostgresMarker(queryable) {
38
+ if ((await queryable.query("select 1 from information_schema.tables where table_schema = $1 and table_name = $2", ["prisma_contract", "marker"])).rows.length === 0) return { kind: "no-table" };
39
+ const row = (await queryable.query("select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1", [APP_SPACE_ID])).rows[0];
40
+ if (!row) return { kind: "absent" };
41
+ return {
42
+ kind: "present",
43
+ record: parseContractMarkerRow(row)
44
+ };
45
+ }
41
46
  function createPostgresAdapter(options) {
42
47
  return Object.freeze(new PostgresAdapterImpl(options));
43
48
  }
44
49
  //#endregion
45
50
  export { createPostgresAdapter as t };
46
51
 
47
- //# sourceMappingURL=adapter-Ctu5_BR4.mjs.map
52
+ //# sourceMappingURL=adapter-CBaRvhQF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-CBaRvhQF.mjs","names":[],"sources":["../src/core/adapter.ts"],"sourcesContent":["import type { CodecLookup } 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 MarkerReadResult,\n SqlQueryable,\n} from '@prisma-next/sql-relational-core/ast';\nimport { parseContractMarkerRow } from '@prisma-next/sql-runtime';\nimport { createPostgresBuiltinCodecLookup } from './codec-lookup';\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 },\n sql: {\n enums: true,\n returning: true,\n defaultInInsert: 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: CodecLookup;\n\n constructor(options?: PostgresAdapterOptions) {\n this.codecLookup = options?.codecLookup ?? createPostgresBuiltinCodecLookup();\n this.profile = Object.freeze({\n id: options?.profileId ?? 'postgres/default@1',\n target: 'postgres',\n capabilities: defaultCapabilities,\n readMarker: (queryable: SqlQueryable) => readPostgresMarker(queryable),\n });\n }\n\n lower(ast: AnyQueryAst, context: LowererContext<PostgresContract>): PostgresLoweredStatement {\n return renderLoweredSql(ast, context.contract, this.codecLookup);\n }\n}\n\nasync function readPostgresMarker(queryable: SqlQueryable): Promise<MarkerReadResult> {\n const exists = await queryable.query(\n 'select 1 from information_schema.tables where table_schema = $1 and table_name = $2',\n ['prisma_contract', 'marker'],\n );\n if (exists.rows.length === 0) {\n return { kind: 'no-table' };\n }\n\n const result = await queryable.query(\n 'select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1',\n [APP_SPACE_ID],\n );\n const row = result.rows[0];\n if (!row) {\n return { kind: 'absent' };\n }\n // Postgres' driver hydrates `text[]` columns as native JS arrays, so the row is already in the shape the shared parser expects.\n return { kind: 'present', record: parseContractMarkerRow(row) };\n}\n\nexport function createPostgresAdapter(options?: PostgresAdapterOptions) {\n return Object.freeze(new PostgresAdapterImpl(options));\n}\n"],"mappings":";;;;AAeA,MAAM,sBAAsB,OAAO,OAAO;CACxC,UAAU;EACR,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACZ;CACD,KAAK;EACH,OAAO;EACP,WAAW;EACX,iBAAiB;EAClB;CACF,CAAC;AAEF,IAAM,sBAAN,MAEA;CAEE,WAAoB;CACpB,WAAoB;CAEpB;CACA;CAEA,YAAY,SAAkC;EAC5C,KAAK,cAAc,SAAS,eAAe,kCAAkC;EAC7E,KAAK,UAAU,OAAO,OAAO;GAC3B,IAAI,SAAS,aAAa;GAC1B,QAAQ;GACR,cAAc;GACd,aAAa,cAA4B,mBAAmB,UAAU;GACvE,CAAC;;CAGJ,MAAM,KAAkB,SAAqE;EAC3F,OAAO,iBAAiB,KAAK,QAAQ,UAAU,KAAK,YAAY;;;AAIpE,eAAe,mBAAmB,WAAoD;CAKpF,KAAI,MAJiB,UAAU,MAC7B,uFACA,CAAC,mBAAmB,SAAS,CAC9B,EACU,KAAK,WAAW,GACzB,OAAO,EAAE,MAAM,YAAY;CAO7B,MAAM,OAAM,MAJS,UAAU,MAC7B,wJACA,CAAC,aAAa,CACf,EACkB,KAAK;CACxB,IAAI,CAAC,KACH,OAAO,EAAE,MAAM,UAAU;CAG3B,OAAO;EAAE,MAAM;EAAW,QAAQ,uBAAuB,IAAI;EAAE;;AAGjE,SAAgB,sBAAsB,SAAkC;CACtE,OAAO,OAAO,OAAO,IAAI,oBAAoB,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"mappings":";;;;cA4BM,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;EAetB,KAAA,CAAM,GAAA,EAAK,WAAA,EAAa,OAAA,EAAS,cAAA,CAAe,gBAAA,IAAoB,wBAAA;AAAA;AAAA,iBAKtD,qBAAA,CAAsB,OAAA,GAAU,sBAAA,GAAsB,QAAA,CAAA,mBAAA"}
1
+ {"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"mappings":";;;;cA8BM,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;EAUtB,KAAA,CAAM,GAAA,EAAK,WAAA,EAAa,OAAA,EAAS,cAAA,CAAe,gBAAA,IAAoB,wBAAA;AAAA;AAAA,iBA0BtD,qBAAA,CAAsB,OAAA,GAAU,sBAAA,GAAsB,QAAA,CAAA,mBAAA"}
package/dist/adapter.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createPostgresAdapter } from "./adapter-Ctu5_BR4.mjs";
1
+ import { t as createPostgresAdapter } from "./adapter-CBaRvhQF.mjs";
2
2
  export { createPostgresAdapter };
package/dist/runtime.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { t as createPostgresAdapter } from "./adapter-Ctu5_BR4.mjs";
1
+ import { t as createPostgresAdapter } from "./adapter-CBaRvhQF.mjs";
2
2
  import { n as postgresQueryOperations, t as postgresAdapterDescriptorMeta } from "./descriptor-meta-CyjnYUWG.mjs";
3
3
  import { extractCodecLookup } from "@prisma-next/framework-components/control";
4
4
  import { postgresCodecRegistry } from "@prisma-next/target-postgres/codecs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma-next/adapter-postgres",
3
- "version": "0.5.0-dev.83",
3
+ "version": "0.5.0-dev.85",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -10,34 +10,34 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "arktype": "^2.1.29",
13
- "@prisma-next/contract": "0.5.0-dev.83",
14
- "@prisma-next/family-sql": "0.5.0-dev.83",
15
- "@prisma-next/contract-authoring": "0.5.0-dev.83",
16
- "@prisma-next/framework-components": "0.5.0-dev.83",
17
- "@prisma-next/ids": "0.5.0-dev.83",
18
- "@prisma-next/sql-contract": "0.5.0-dev.83",
19
- "@prisma-next/sql-contract-psl": "0.5.0-dev.83",
20
- "@prisma-next/sql-operations": "0.5.0-dev.83",
21
- "@prisma-next/sql-contract-ts": "0.5.0-dev.83",
22
- "@prisma-next/sql-relational-core": "0.5.0-dev.83",
23
- "@prisma-next/sql-schema-ir": "0.5.0-dev.83",
24
- "@prisma-next/sql-runtime": "0.5.0-dev.83",
25
- "@prisma-next/target-postgres": "0.5.0-dev.83",
26
- "@prisma-next/utils": "0.5.0-dev.83"
13
+ "@prisma-next/contract": "0.5.0-dev.85",
14
+ "@prisma-next/contract-authoring": "0.5.0-dev.85",
15
+ "@prisma-next/family-sql": "0.5.0-dev.85",
16
+ "@prisma-next/framework-components": "0.5.0-dev.85",
17
+ "@prisma-next/ids": "0.5.0-dev.85",
18
+ "@prisma-next/sql-contract-psl": "0.5.0-dev.85",
19
+ "@prisma-next/sql-contract-ts": "0.5.0-dev.85",
20
+ "@prisma-next/sql-contract": "0.5.0-dev.85",
21
+ "@prisma-next/sql-relational-core": "0.5.0-dev.85",
22
+ "@prisma-next/sql-runtime": "0.5.0-dev.85",
23
+ "@prisma-next/sql-schema-ir": "0.5.0-dev.85",
24
+ "@prisma-next/sql-operations": "0.5.0-dev.85",
25
+ "@prisma-next/target-postgres": "0.5.0-dev.85",
26
+ "@prisma-next/utils": "0.5.0-dev.85"
27
27
  },
28
28
  "devDependencies": {
29
29
  "pathe": "^2.0.3",
30
30
  "tsdown": "0.22.0",
31
31
  "typescript": "5.9.3",
32
32
  "vitest": "4.1.5",
33
- "@prisma-next/driver-postgres": "0.5.0-dev.83",
34
- "@prisma-next/errors": "0.5.0-dev.83",
35
- "@prisma-next/cli": "0.5.0-dev.83",
36
- "@prisma-next/migration-tools": "0.5.0-dev.83",
37
- "@prisma-next/extension-pgvector": "0.5.0-dev.83",
33
+ "@prisma-next/cli": "0.5.0-dev.85",
34
+ "@prisma-next/errors": "0.5.0-dev.85",
35
+ "@prisma-next/extension-pgvector": "0.5.0-dev.85",
36
+ "@prisma-next/driver-postgres": "0.5.0-dev.85",
38
37
  "@prisma-next/test-utils": "0.0.1",
38
+ "@prisma-next/tsdown": "0.0.0",
39
39
  "@prisma-next/tsconfig": "0.0.0",
40
- "@prisma-next/tsdown": "0.0.0"
40
+ "@prisma-next/migration-tools": "0.5.0-dev.85"
41
41
  },
42
42
  "exports": {
43
43
  "./adapter": "./dist/adapter.mjs",
@@ -5,6 +5,8 @@ import type {
5
5
  AdapterProfile,
6
6
  AnyQueryAst,
7
7
  LowererContext,
8
+ MarkerReadResult,
9
+ SqlQueryable,
8
10
  } from '@prisma-next/sql-relational-core/ast';
9
11
  import { parseContractMarkerRow } from '@prisma-next/sql-runtime';
10
12
  import { createPostgresBuiltinCodecLookup } from './codec-lookup';
@@ -42,12 +44,7 @@ class PostgresAdapterImpl
42
44
  id: options?.profileId ?? 'postgres/default@1',
43
45
  target: 'postgres',
44
46
  capabilities: defaultCapabilities,
45
- readMarkerStatement: () => ({
46
- sql: 'select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1',
47
- params: [APP_SPACE_ID],
48
- }),
49
- // Postgres' driver hydrates `text[]` columns as native JS arrays, so the row is already in the shape the shared parser expects.
50
- parseMarkerRow: (row: unknown) => parseContractMarkerRow(row),
47
+ readMarker: (queryable: SqlQueryable) => readPostgresMarker(queryable),
51
48
  });
52
49
  }
53
50
 
@@ -56,6 +53,27 @@ class PostgresAdapterImpl
56
53
  }
57
54
  }
58
55
 
56
+ async function readPostgresMarker(queryable: SqlQueryable): Promise<MarkerReadResult> {
57
+ const exists = await queryable.query(
58
+ 'select 1 from information_schema.tables where table_schema = $1 and table_name = $2',
59
+ ['prisma_contract', 'marker'],
60
+ );
61
+ if (exists.rows.length === 0) {
62
+ return { kind: 'no-table' };
63
+ }
64
+
65
+ const result = await queryable.query(
66
+ 'select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1',
67
+ [APP_SPACE_ID],
68
+ );
69
+ const row = result.rows[0];
70
+ if (!row) {
71
+ return { kind: 'absent' };
72
+ }
73
+ // Postgres' driver hydrates `text[]` columns as native JS arrays, so the row is already in the shape the shared parser expects.
74
+ return { kind: 'present', record: parseContractMarkerRow(row) };
75
+ }
76
+
59
77
  export function createPostgresAdapter(options?: PostgresAdapterOptions) {
60
78
  return Object.freeze(new PostgresAdapterImpl(options));
61
79
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter-Ctu5_BR4.mjs","names":[],"sources":["../src/core/adapter.ts"],"sourcesContent":["import type { CodecLookup } 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} from '@prisma-next/sql-relational-core/ast';\nimport { parseContractMarkerRow } from '@prisma-next/sql-runtime';\nimport { createPostgresBuiltinCodecLookup } from './codec-lookup';\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 },\n sql: {\n enums: true,\n returning: true,\n defaultInInsert: 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: CodecLookup;\n\n constructor(options?: PostgresAdapterOptions) {\n this.codecLookup = options?.codecLookup ?? createPostgresBuiltinCodecLookup();\n this.profile = Object.freeze({\n id: options?.profileId ?? 'postgres/default@1',\n target: 'postgres',\n capabilities: defaultCapabilities,\n readMarkerStatement: () => ({\n sql: 'select core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants from prisma_contract.marker where space = $1',\n params: [APP_SPACE_ID],\n }),\n // Postgres' driver hydrates `text[]` columns as native JS arrays, so the row is already in the shape the shared parser expects.\n parseMarkerRow: (row: unknown) => parseContractMarkerRow(row),\n });\n }\n\n lower(ast: AnyQueryAst, context: LowererContext<PostgresContract>): PostgresLoweredStatement {\n return renderLoweredSql(ast, context.contract, this.codecLookup);\n }\n}\n\nexport function createPostgresAdapter(options?: PostgresAdapterOptions) {\n return Object.freeze(new PostgresAdapterImpl(options));\n}\n"],"mappings":";;;;AAaA,MAAM,sBAAsB,OAAO,OAAO;CACxC,UAAU;EACR,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACZ;CACD,KAAK;EACH,OAAO;EACP,WAAW;EACX,iBAAiB;EAClB;CACF,CAAC;AAEF,IAAM,sBAAN,MAEA;CAEE,WAAoB;CACpB,WAAoB;CAEpB;CACA;CAEA,YAAY,SAAkC;EAC5C,KAAK,cAAc,SAAS,eAAe,kCAAkC;EAC7E,KAAK,UAAU,OAAO,OAAO;GAC3B,IAAI,SAAS,aAAa;GAC1B,QAAQ;GACR,cAAc;GACd,4BAA4B;IAC1B,KAAK;IACL,QAAQ,CAAC,aAAa;IACvB;GAED,iBAAiB,QAAiB,uBAAuB,IAAI;GAC9D,CAAC;;CAGJ,MAAM,KAAkB,SAAqE;EAC3F,OAAO,iBAAiB,KAAK,QAAQ,UAAU,KAAK,YAAY;;;AAIpE,SAAgB,sBAAsB,SAAkC;CACtE,OAAO,OAAO,OAAO,IAAI,oBAAoB,QAAQ,CAAC"}