@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.
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/postgres-resource/SKILL.md +9 -1
- package/build/utils/schema.d.ts.map +1 -1
- package/build/utils/schema.js +28 -4
- package/build/utils/schema.js.map +1 -1
- package/package.json +6 -6
- package/src/utils/schema.ts +32 -4
- package/tests/schema.spec.ts +26 -0
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/postgres-resource",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"generatedAt": "2026-08-
|
|
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.
|
|
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;
|
|
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"}
|
package/build/utils/schema.js
CHANGED
|
@@ -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.
|
|
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.
|
|
31
|
-
"@owlmeans/context": "^0.1.
|
|
32
|
-
"@owlmeans/resource": "^0.1.
|
|
33
|
-
"@owlmeans/server-context": "^0.1.
|
|
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.
|
|
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",
|
package/src/utils/schema.ts
CHANGED
|
@@ -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,
|
package/tests/schema.spec.ts
CHANGED
|
@@ -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',
|