@owlmeans/postgres-resource 0.1.17 → 0.1.18-rc.0

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,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/postgres-resource",
4
- "version": "0.1.17",
5
- "generatedAt": "2026-08-15T13:01:19.935Z",
4
+ "version": "0.1.18-rc.0",
5
+ "generatedAt": "2026-08-16T22:20:50.509Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/postgres-resource
9
9
 
10
10
  **Layer:** Infra
11
- **Install:** `"@owlmeans/postgres-resource": "^0.1.17"` in `dependencies` (peers `pg`, `ajv`)
11
+ **Install:** `"@owlmeans/postgres-resource": "^0.1.18-rc.0"` in `dependencies` (peers `pg`, `ajv`)
12
12
 
13
13
  The Postgres counterpart of [[mongo-resource]]. The difference that governs everything else: a
14
14
  Mongo collection has no structure, a Postgres table does — so **the resource layer owns the DDL**
@@ -84,6 +84,14 @@ For what JSON Schema can't say. Per property: `column`, `type`, `length`, `preci
84
84
  The compiler reads the raw schema object and never validates through AJV, so `pg:` costs nothing at
85
85
  runtime — but a consumer compiling that schema in **strict mode** must `ajv.addKeyword(pgKeyword)`.
86
86
 
87
+ **Index and unique specs are deduplicated by resolved name, first declaration wins.** Three
88
+ declaration sites merge into one `TableSpec` — the schema root, a per-property override, and
89
+ `resource.index()` — and a consumer that declares one index in two of them is expressing a style,
90
+ not an error. Two entries under one name would emit the same `CREATE INDEX` twice in a single DDL
91
+ transaction, and Postgres answers the second with `42P07`, rolling back the plan that created the
92
+ table: the resource then fails every boot with an error naming an index that does not exist.
93
+ `byName` in `utils/schema.ts` collapses them and warns.
94
+
87
95
  ## Reconciliation is authoritative — `PgAutoSync`
88
96
 
89
97
  At `init()`: introspect → diff → apply the whole `DdlPlan` in one transaction under
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAKpC,OAAO,KAAK,EAC+B,WAAW,EACrB,SAAS,EACzC,MAAM,aAAa,CAAA;AA0BpB;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAmB3C,CAAA;AA4KD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,UACrB,MAAM,UAAU,SAAS,GAAG,SAAS,YAAY,MAAM,SAAS,MAAM,YACnE,OAAO,iBAAgB,WAAW,EAAE,KAC7C,SA+KF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;CAAuC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAKpC,OAAO,KAAK,EAC+B,WAAW,EACrB,SAAS,EACzC,MAAM,aAAa,CAAA;AA0BpB;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAmB3C,CAAA;AAwMD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,UACrB,MAAM,UAAU,SAAS,GAAG,SAAS,YAAY,MAAM,SAAS,MAAM,YACnE,OAAO,iBAAgB,WAAW,EAAE,KAC7C,SA+KF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;CAAuC,CAAA"}
@@ -179,6 +179,30 @@ const collectProperties = (schema) => {
179
179
  }
180
180
  return { properties, required };
181
181
  };
182
+ /**
183
+ * Collapse specs that resolved to the same object name, first declaration wins.
184
+ *
185
+ * The same index can legitimately be declared twice — a schema-root `pg.indexes` entry, a
186
+ * per-property `pg: { index: ... }` override and a `resource.index()` call all land in one
187
+ * list, and nothing stops a declaration from repeating one of the others. Two entries with
188
+ * one name emit the same `CREATE INDEX` twice inside a single DDL transaction, and Postgres
189
+ * answers the second with `42P07 already exists` — which rolls back the whole plan, so the
190
+ * table the first statement created never lands and the resource can never initialize.
191
+ * Duplicates are a declaration style, not a schema error: dedupe them, don't fail the boot.
192
+ */
193
+ const byName = (specs, alias, kind) => {
194
+ const seen = new Map();
195
+ for (const spec of specs) {
196
+ const name = spec.name;
197
+ if (seen.has(name)) {
198
+ console.warn(`@owlmeans/postgres-resource: ${alias} declares ${kind} "${name}" more than once —`
199
+ + ' keeping the first declaration.');
200
+ continue;
201
+ }
202
+ seen.set(name, spec);
203
+ }
204
+ return [...seen.values()];
205
+ };
182
206
  /**
183
207
  * Compile a resource's AJV schema into the table specification that drives both DDL
184
208
  * emission and drift detection.
@@ -310,7 +334,7 @@ export const schemaToTableSpec = (alias, schema, pgSchema, table, autoSync, extr
310
334
  }
311
335
  return column.column;
312
336
  });
313
- const resolvedIndexes = indexes.map(spec => {
337
+ const resolvedIndexes = byName(indexes.map(spec => {
314
338
  const list = spec.columns == null
315
339
  ? []
316
340
  : mapColumns(Array.isArray(spec.columns) ? spec.columns : [spec.columns]);
@@ -321,11 +345,11 @@ export const schemaToTableSpec = (alias, schema, pgSchema, table, autoSync, extr
321
345
  method: spec.method ?? PgIndexMethod.BTree,
322
346
  name: pgIdentifier(spec.name ?? `${resolvedTable}_${list.join('_')}_${suffix}`)
323
347
  };
324
- });
325
- const resolvedUniques = uniques.map(spec => {
348
+ }), alias, 'index');
349
+ const resolvedUniques = byName(uniques.map(spec => {
326
350
  const list = mapColumns(spec.columns);
327
351
  return { columns: list, name: pgIdentifier(spec.name ?? `${resolvedTable}_${list.join('_')}_key`) };
328
- });
352
+ }), alias, 'unique');
329
353
  return {
330
354
  alias,
331
355
  schema: resolvedSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/postgres-resource",
3
- "version": "0.1.17",
3
+ "version": "0.1.18-rc.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -27,16 +27,16 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@noble/hashes": "^1.5.0",
30
- "@owlmeans/basic-ids": "^0.1.17",
31
- "@owlmeans/context": "^0.1.17",
32
- "@owlmeans/resource": "^0.1.17",
33
- "@owlmeans/server-context": "^0.1.17",
30
+ "@owlmeans/basic-ids": "^0.1.18-rc.0",
31
+ "@owlmeans/context": "^0.1.18-rc.0",
32
+ "@owlmeans/resource": "^0.1.18-rc.0",
33
+ "@owlmeans/server-context": "^0.1.18-rc.0",
34
34
  "@scure/base": "^2.3.0",
35
35
  "drizzle-orm": "~0.45.2"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@owlmeans/dep-config": "workspace:*",
39
- "@owlmeans/test-integration": "^0.1.17",
39
+ "@owlmeans/test-integration": "^0.1.18-rc.0",
40
40
  "@types/bun": "^1.3.14",
41
41
  "@types/node": "^26.1.0",
42
42
  "@types/pg": "^8.20.4",
@@ -228,6 +228,34 @@ const collectProperties = (schema: RawSchema): { properties: Record<string, RawP
228
228
  return { properties, required }
229
229
  }
230
230
 
231
+ /**
232
+ * Collapse specs that resolved to the same object name, first declaration wins.
233
+ *
234
+ * The same index can legitimately be declared twice — a schema-root `pg.indexes` entry, a
235
+ * per-property `pg: { index: ... }` override and a `resource.index()` call all land in one
236
+ * list, and nothing stops a declaration from repeating one of the others. Two entries with
237
+ * one name emit the same `CREATE INDEX` twice inside a single DDL transaction, and Postgres
238
+ * answers the second with `42P07 already exists` — which rolls back the whole plan, so the
239
+ * table the first statement created never lands and the resource can never initialize.
240
+ * Duplicates are a declaration style, not a schema error: dedupe them, don't fail the boot.
241
+ */
242
+ const byName = <T extends { name?: string }>(specs: T[], alias: string, kind: string): T[] => {
243
+ const seen = new Map<string, T>()
244
+ for (const spec of specs) {
245
+ const name = spec.name!
246
+ if (seen.has(name)) {
247
+ console.warn(
248
+ `@owlmeans/postgres-resource: ${alias} declares ${kind} "${name}" more than once —`
249
+ + ' keeping the first declaration.'
250
+ )
251
+ continue
252
+ }
253
+ seen.set(name, spec)
254
+ }
255
+
256
+ return [...seen.values()]
257
+ }
258
+
231
259
  /**
232
260
  * Compile a resource's AJV schema into the table specification that drives both DDL
233
261
  * emission and drift detection.
@@ -376,7 +404,7 @@ export const schemaToTableSpec = (
376
404
  return column.column
377
405
  })
378
406
 
379
- const resolvedIndexes: PgIndexSpec[] = indexes.map(spec => {
407
+ const resolvedIndexes: PgIndexSpec[] = byName(indexes.map(spec => {
380
408
  const list = spec.columns == null
381
409
  ? []
382
410
  : mapColumns(Array.isArray(spec.columns) ? spec.columns : [spec.columns])
@@ -388,13 +416,13 @@ export const schemaToTableSpec = (
388
416
  method: spec.method ?? PgIndexMethod.BTree,
389
417
  name: pgIdentifier(spec.name ?? `${resolvedTable}_${list.join('_')}_${suffix}`)
390
418
  }
391
- })
419
+ }), alias, 'index')
392
420
 
393
- const resolvedUniques: PgUniqueSpec[] = uniques.map(spec => {
421
+ const resolvedUniques: PgUniqueSpec[] = byName(uniques.map(spec => {
394
422
  const list = mapColumns(spec.columns)
395
423
 
396
424
  return { columns: list, name: pgIdentifier(spec.name ?? `${resolvedTable}_${list.join('_')}_key`) }
397
- })
425
+ }), alias, 'unique')
398
426
 
399
427
  return {
400
428
  alias,
@@ -178,6 +178,32 @@ describe('@owlmeans/postgres-resource — schemaToTableSpec', () => {
178
178
  .toEqual(['email', 'ownerId'])
179
179
  })
180
180
 
181
+ test('collapses an index declared both in the schema and through resource.index()', () => {
182
+ const spec = schemaToTableSpec('things', {
183
+ type: 'object',
184
+ properties: {
185
+ id: { type: 'string', format: 'uuid' },
186
+ status: { type: 'string' },
187
+ ownerId: { type: 'string', pg: { index: [{ name: 'idx_things_owner' }] } }
188
+ },
189
+ required: ['id', 'status'],
190
+ pg: { indexes: [{ name: 'idx_things_status', columns: ['status'] }] }
191
+ } as AnySchema, 'app', 'things', true, [
192
+ /** What `resource.index()` contributes — here repeating both schema-borne declarations. */
193
+ { name: 'idx_things_status', columns: ['status'] },
194
+ { name: 'idx_things_owner', columns: ['ownerId'] }
195
+ ])
196
+
197
+ /**
198
+ * One entry per name. Two would emit the same CREATE INDEX twice in one DDL transaction,
199
+ * and Postgres rolls the whole plan back on the second — taking the CREATE TABLE with it.
200
+ */
201
+ expect(spec.indexes.map(index => index.name).sort())
202
+ .toEqual(['idx_things_owner', 'idx_things_status'])
203
+ expect(spec.indexes.find(index => index.name === 'idx_things_status')?.columns).toEqual(['status'])
204
+ expect(spec.indexes.find(index => index.name === 'idx_things_owner')?.columns).toEqual(['ownerId'])
205
+ })
206
+
181
207
  test('turns a string enum into a CHECK that tolerates NULL when the column does', () => {
182
208
  const spec = compile({
183
209
  type: 'object',