@owlmeans/postgres-resource 0.1.18-rc.4 → 0.1.18-rc.40

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.
Files changed (48) hide show
  1. package/README.md +185 -101
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/postgres-resource/SKILL.md +110 -21
  4. package/build/consts.d.ts +8 -1
  5. package/build/consts.d.ts.map +1 -1
  6. package/build/consts.js +8 -1
  7. package/build/consts.js.map +1 -1
  8. package/build/declarations.js +5 -5
  9. package/build/resource.d.ts +2 -2
  10. package/build/resource.d.ts.map +1 -1
  11. package/build/resource.js +112 -108
  12. package/build/resource.js.map +1 -1
  13. package/build/types.d.ts +34 -19
  14. package/build/types.d.ts.map +1 -1
  15. package/build/utils/criteria.d.ts +10 -6
  16. package/build/utils/criteria.d.ts.map +1 -1
  17. package/build/utils/criteria.js +156 -11
  18. package/build/utils/criteria.js.map +1 -1
  19. package/build/utils/diff.d.ts +13 -0
  20. package/build/utils/diff.d.ts.map +1 -1
  21. package/build/utils/diff.js +60 -6
  22. package/build/utils/diff.js.map +1 -1
  23. package/build/utils/migrations.d.ts +2 -2
  24. package/build/utils/migrations.js +2 -2
  25. package/build/utils/name.d.ts +3 -3
  26. package/build/utils/name.js +3 -3
  27. package/build/utils/sql.d.ts +10 -2
  28. package/build/utils/sql.d.ts.map +1 -1
  29. package/build/utils/sql.js.map +1 -1
  30. package/build/utils/table.d.ts +4 -0
  31. package/build/utils/table.d.ts.map +1 -1
  32. package/build/utils/table.js +4 -0
  33. package/build/utils/table.js.map +1 -1
  34. package/package.json +7 -7
  35. package/src/consts.ts +8 -1
  36. package/src/declarations.ts +5 -5
  37. package/src/resource.ts +139 -135
  38. package/src/types.ts +36 -18
  39. package/src/utils/criteria.ts +202 -23
  40. package/src/utils/diff.ts +62 -7
  41. package/src/utils/migrations.ts +2 -2
  42. package/src/utils/name.ts +3 -3
  43. package/src/utils/sql.ts +0 -0
  44. package/src/utils/table.ts +5 -1
  45. package/tests/criteria.spec.ts +237 -0
  46. package/tests/diff.spec.ts +111 -0
  47. package/tests/name.spec.ts +3 -3
  48. package/tests/sql.spec.ts +4 -3
package/build/consts.d.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  export declare const DEFAULT_DB_ALIAS = "postgres";
2
- export declare const DEFAULT_PAGE_SIZE = 10;
2
+ /**
3
+ * Rows `list()` returns when the caller names no `size`.
4
+ *
5
+ * A relational table is unbounded, so an unpaged read is a production incident waiting for
6
+ * the row count to grow. Asking for everything stays possible — and greppable — as
7
+ * `list(where, { size: 0 })`.
8
+ */
9
+ export declare const DEFAULT_PAGE_SIZE = 100;
3
10
  /**
4
11
  * Table that records which code-registered migrations have already been applied.
5
12
  * Lives in the same Postgres schema as the resources it tracks, so dropping the
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAE1D,oEAAoE;AACpE,eAAO,MAAM,UAAU,OAAO,CAAA;AAE9B,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,qFAAqF;AACrF,eAAO,MAAM,QAAQ,OAAO,CAAA;AAE5B,iFAAiF;AACjF,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,UAAU,CAAA;AAEpC,sEAAsE;AACtE,eAAO,MAAM,cAAc,4BAA4B,CAAA;AAEvD;;;;;;GAMG;AACH,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;CACZ;AAED,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB;IAC7B,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,UAAU,gBAAgB;CAC3B;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,eAAe,UAAU;IACzB,mBAAmB,UAAU;IAC7B,gBAAgB,UAAU;IAC1B,cAAc,UAAU;IACxB,cAAc,UAAU;IACxB,eAAe,UAAU;IACzB,cAAc,UAAU;IACxB,eAAe,UAAU;IACzB,eAAe,UAAU;IACzB,YAAY,UAAU;IACtB,gBAAgB,UAAU;IAC1B,yBAAyB,UAAU;IACnC,yBAAyB,UAAU;IACnC,sBAAsB,UAAU;IAChC,oBAAoB,UAAU;IAC9B,gBAAgB,UAAU;IAC1B,mBAAmB,UAAU;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,YAAI,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAA;AAEhG,uFAAuF;AACvF,oBAAY,SAAS;IACnB,IAAI,OAAO;IACX,SAAS,OAAO;IAChB,WAAW,OAAO;CACnB"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAE1D,oEAAoE;AACpE,eAAO,MAAM,UAAU,OAAO,CAAA;AAE9B,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,qFAAqF;AACrF,eAAO,MAAM,QAAQ,OAAO,CAAA;AAE5B,iFAAiF;AACjF,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,UAAU,CAAA;AAEpC,sEAAsE;AACtE,eAAO,MAAM,cAAc,4BAA4B,CAAA;AAEvD;;;;;;GAMG;AACH,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;CACZ;AAED,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB;IAC7B,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,UAAU,gBAAgB;CAC3B;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,eAAe,UAAU;IACzB,mBAAmB,UAAU;IAC7B,gBAAgB,UAAU;IAC1B,cAAc,UAAU;IACxB,cAAc,UAAU;IACxB,eAAe,UAAU;IACzB,cAAc,UAAU;IACxB,eAAe,UAAU;IACzB,eAAe,UAAU;IACzB,YAAY,UAAU;IACtB,gBAAgB,UAAU;IAC1B,yBAAyB,UAAU;IACnC,yBAAyB,UAAU;IACnC,sBAAsB,UAAU;IAChC,oBAAoB,UAAU;IAC9B,gBAAgB,UAAU;IAC1B,mBAAmB,UAAU;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,YAAI,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAA;AAEhG,uFAAuF;AACvF,oBAAY,SAAS;IACnB,IAAI,OAAO;IACX,SAAS,OAAO;IAChB,WAAW,OAAO;CACnB"}
package/build/consts.js CHANGED
@@ -1,5 +1,12 @@
1
1
  export const DEFAULT_DB_ALIAS = 'postgres';
2
- export const DEFAULT_PAGE_SIZE = 10;
2
+ /**
3
+ * Rows `list()` returns when the caller names no `size`.
4
+ *
5
+ * A relational table is unbounded, so an unpaged read is a production incident waiting for
6
+ * the row count to grow. Asking for everything stays possible — and greppable — as
7
+ * `list(where, { size: 0 })`.
8
+ */
9
+ export const DEFAULT_PAGE_SIZE = 100;
3
10
  /**
4
11
  * Table that records which code-registered migrations have already been applied.
5
12
  * Lives in the same Postgres schema as the resources it tracks, so dropping the
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AAE1D,oEAAoE;AACpE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAE9B,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAA;AAE5B,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAA;AAEpC,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,mCAAqB,CAAA;IACrB,yBAAW,CAAA;AACb,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,6CAAsB,CAAA;IACtB,4CAAqB,CAAA;IACrB,0CAAmB,CAAA;IACnB,2CAAoB,CAAA;IACpB,iDAA0B,CAAA;AAC5B,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,4CAA6B,CAAA;IAC7B,yCAA0B,CAAA;IAC1B,uCAAwB,CAAA;IACxB,uCAAwB,CAAA;IACxB,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,wCAAyB,CAAA;IACzB,wCAAyB,CAAA;IACzB,qCAAsB,CAAA;IACtB,yCAA0B,CAAA;IAC1B,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IACnC,+CAAgC,CAAA;IAChC,6CAA8B,CAAA;IAC9B,yCAA0B,CAAA;IAC1B,4CAA6B,CAAA;AAC/B,CAAC,EAlBW,WAAW,KAAX,WAAW,QAkBtB;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAA;AAEhG,uFAAuF;AACvF,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,4CAAW,CAAA;IACX,sDAAgB,CAAA;IAChB,0DAAkB,CAAA;AACpB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AAE1D,oEAAoE;AACpE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAE9B,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAA;AAE5B,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAA;AAEpC,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,mCAAqB,CAAA;IACrB,yBAAW,CAAA;AACb,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,6CAAsB,CAAA;IACtB,4CAAqB,CAAA;IACrB,0CAAmB,CAAA;IACnB,2CAAoB,CAAA;IACpB,iDAA0B,CAAA;AAC5B,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,4CAA6B,CAAA;IAC7B,yCAA0B,CAAA;IAC1B,uCAAwB,CAAA;IACxB,uCAAwB,CAAA;IACxB,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,wCAAyB,CAAA;IACzB,wCAAyB,CAAA;IACzB,qCAAsB,CAAA;IACtB,yCAA0B,CAAA;IAC1B,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IACnC,+CAAgC,CAAA;IAChC,6CAA8B,CAAA;IAC9B,yCAA0B,CAAA;IAC1B,4CAA6B,CAAA;AAC/B,CAAC,EAlBW,WAAW,KAAX,WAAW,QAkBtB;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAA;AAEhG,uFAAuF;AACvF,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,4CAAW,CAAA;IACX,sDAAgB,CAAA;IAChB,0DAAkB,CAAA;AACpB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
@@ -2,11 +2,11 @@ import { createMigrationRegistry } from '@owlmeans/resource';
2
2
  /**
3
3
  * Per-alias declaration store, held at module scope rather than on the resource object.
4
4
  *
5
- * `reinitializeContext` rebuilds every resource, which drops anything a caller attached
6
- * by chaining. Mongo lives with that by requiring the app to pass `makeCustomResource`
7
- * and re-run the whole maker; migrations can't depend on that discipline, because losing
8
- * one silently means a data transformation never runs. Keying the declarations by alias
9
- * makes them survive any number of context switches.
5
+ * A maker may run more than once for the same alias — a custom maker wrapping the built-in
6
+ * one, a maker called again by an app or a spec. Keying the declarations by alias makes that
7
+ * a no-op: every run reads and extends the same schema, indexes and migrations, so nothing a
8
+ * caller chained onto an earlier resource object is lost. Losing a migration is silent — the
9
+ * data transformation simply never runs — which is why the store cannot live on the object.
10
10
  */
11
11
  const declarations = new Map();
12
12
  export const getDeclaration = (alias) => {
@@ -1,4 +1,4 @@
1
- import type { ResourceMaker, ResourceRecord } from '@owlmeans/resource';
1
+ import type { ResourceRecord } from '@owlmeans/resource';
2
2
  import type { PostgresResource } from './types.js';
3
- export declare const makePostgresResource: <R extends ResourceRecord, T extends PostgresResource<R> = PostgresResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, makeCustomResource?: ResourceMaker<R, T>, tableName?: string) => T;
3
+ export declare const makePostgresResource: <R extends ResourceRecord, T extends PostgresResource<R> = PostgresResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, tableName?: string) => T;
4
4
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACiB,aAAa,EAAE,cAAc,EACzD,MAAM,oBAAoB,CAAA;AAY3B,OAAO,KAAK,EAC8D,gBAAgB,EAEzF,MAAM,YAAY,CAAA;AA4BnB,eAAO,MAAM,oBAAoB,GAC/B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAEtE,MAAM,YAAW,MAAM,iBAAmC,MAAM,uBAClD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,MAAM,KAC3D,CA+cF,CAAA"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACuD,cAAc,EAChF,MAAM,oBAAoB,CAAA;AAW3B,OAAO,KAAK,EAC8D,gBAAgB,EAEzF,MAAM,YAAY,CAAA;AAiBnB,eAAO,MAAM,oBAAoB,GAC/B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAEtE,MAAM,YAAW,MAAM,iBAAmC,MAAM,cAC3D,MAAM,KACjB,CAieF,CAAA"}
package/build/resource.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { appendContextual, assertContext } from '@owlmeans/context';
2
- import { MisshapedRecord, RecordExists, RecordUpdateFailed, UnknownRecordError, UnsupportedArgumentError, prepareListOptions } from '@owlmeans/resource';
2
+ import { MisshapedRecord, RecordExists, RecordUpdateFailed, UnknownRecordError, UnsupportedArgumentError } from '@owlmeans/resource';
3
3
  import { eq, sql } from 'drizzle-orm';
4
4
  import { DEFAULT_DB_ALIAS, DEFAULT_PAGE_SIZE, ID_FIELD } from './consts.js';
5
5
  import { getDeclaration } from './declarations.js';
@@ -10,18 +10,13 @@ import { initializeTable } from './utils/life-cycle.js';
10
10
  import { recordToFullValues, recordToValues, resultToRecord, rowToRecord } from './utils/marshal.js';
11
11
  import { makeTx } from './utils/migrations.js';
12
12
  import { refOf, resolvePlaceholders } from './utils/sql.js';
13
- const fieldOf = (opts) => typeof opts === 'string' ? opts : opts?.field;
14
- const ttlOf = (opts) => typeof opts === 'object' ? opts.ttl : undefined;
15
- /**
16
- * Hand a runtime built table to Drizzle's query builder.
17
- *
18
- * {@link PgRuntimeTable} is deliberately untyped — the table is compiled from a JSON schema
19
- * at runtime, so there is no static shape to infer. Naming the erased `PgTable` here is what
20
- * keeps the builder's *result* types usable; casting the argument to `never` instead would
21
- * silently collapse every returned row to `never`.
22
- */
23
- const pgTable = (table) => table;
24
- export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, makeCustomResource, tableName) => {
13
+ /** Postgres has no row expiry — silently ignoring a TTL would lose data. */
14
+ const refuseTtl = (opts) => {
15
+ if (opts?.ttl != null) {
16
+ throw new UnsupportedArgumentError('ttl');
17
+ }
18
+ };
19
+ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, tableName) => {
25
20
  const location = `postgres-resource:${alias}`;
26
21
  const declaration = getDeclaration(alias);
27
22
  /** Set by `init()`; every data method goes through `ensure()`, which guarantees them. */
@@ -60,10 +55,17 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
60
55
  }
61
56
  return column;
62
57
  };
63
- const identify = (table, property, value) => {
64
- const column = columnOf(table, property);
65
- return eq(entity[column.property], value);
66
- };
58
+ /** `WHERE <column> = <value>` for one property, by its schema name. */
59
+ const identify = (table, from, property, value) => eq(from[columnOf(table, property).property], value);
60
+ /**
61
+ * The condition a read or a write is keyed on. A string is the record's id; a criteria
62
+ * object is translated in full, so one call can ask by several fields at once.
63
+ */
64
+ const where = (table, from, query) => typeof query === 'string'
65
+ ? identify(table, from, ID_FIELD, query)
66
+ : criteriaToSql(query, table, from);
67
+ /** What an unknown record is called in the error — the id, or the query that missed. */
68
+ const describe = (query) => typeof query === 'string' ? query : JSON.stringify(query);
67
69
  const raw = async (text, params) => {
68
70
  const { db, spec: table } = await ensure();
69
71
  const context = assertContext(resource.ctx, location);
@@ -75,55 +77,53 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
75
77
  throw pgErrorToResourceError(error);
76
78
  }
77
79
  };
78
- const resource = appendContextual(alias, {
79
- get: async (id, field, opts) => {
80
- const record = await resource.load(id, field, opts);
80
+ /**
81
+ * The single-record read both `get` and `load` answer with. Standalone so neither closes over
82
+ * `resource` — a member that referenced it could not be inferred against the generic.
83
+ */
84
+ const loadOne = async (query, opts) => {
85
+ const { db, spec: table, entity: from } = await ensure();
86
+ const rows = await db.drizzle.select().from(from).where(where(table, from, query))
87
+ .orderBy(...sortToSql(opts?.sort, table, from)).limit(1);
88
+ return rows.length < 1 ? null : resultToRecord(rows[0], table);
89
+ };
90
+ const members = {
91
+ get: (async (query, opts) => {
92
+ const record = await loadOne(query, opts);
81
93
  if (record == null) {
82
- throw new UnknownRecordError(id);
94
+ throw new UnknownRecordError(describe(query));
83
95
  }
84
96
  return record;
85
- },
86
- load: async (id, field, opts) => {
87
- if (typeof field === 'object') {
88
- opts = field;
89
- field = field.field;
90
- }
91
- if (ttlOf(opts) != null) {
92
- /** Postgres has no row expiry — silently ignoring a TTL would lose data. */
93
- throw new UnsupportedArgumentError('ttl');
94
- }
95
- const { db, spec: table, entity: from } = await ensure();
96
- const rows = await db.drizzle.select().from(pgTable(from))
97
- .where(identify(table, field ?? ID_FIELD, id)).limit(1);
98
- return rows.length < 1 ? null : resultToRecord(rows[0], table);
99
- },
97
+ }),
98
+ load: loadOne,
100
99
  list: async (criteria, opts) => {
101
100
  const { db, spec: table, entity: from } = await ensure();
102
- const options = prepareListOptions(DEFAULT_PAGE_SIZE, criteria, opts);
103
- const pager = options.pager ?? {};
104
- const size = pager.size ?? DEFAULT_PAGE_SIZE;
105
- const where = criteriaToSql(options.criteria, table, from);
101
+ const condition = criteriaToSql(criteria, table, from);
102
+ const order = sortToSql(opts?.sort, table, from);
103
+ /** Counted separately, so `total` describes the whole match rather than the page. */
106
104
  const totals = await db.drizzle
107
- .select({ total: sql `count(*)::int` }).from(pgTable(from)).where(where);
105
+ .select({ total: sql `count(*)::int` }).from(from).where(condition);
108
106
  const total = Number(totals[0]?.total ?? 0);
109
- pager.total = total;
110
- const skip = (pager.page ?? 0) * size;
111
- if (total === 0 || skip >= total) {
112
- return { items: [], pager };
113
- }
114
- const rows = await db.drizzle.select().from(pgTable(from)).where(where)
115
- .orderBy(...sortToSql(pager.sort, table, from)).limit(size).offset(skip);
116
- return { pager, items: rows.map(row => resultToRecord(row, table)) };
117
- },
118
- save: async (record, opts) => {
119
- const field = fieldOf(opts);
120
- const present = field != null
121
- ? record[field] != null
122
- : record.id != null;
123
- return present
124
- ? resource.update(record, opts)
125
- : resource.create(record, typeof opts !== 'string' ? opts : undefined);
107
+ const marshal = (rows) => rows.map(row => resultToRecord(row, table));
108
+ /** `size: 0` lifts the limit — the explicit, greppable way to read a whole table. */
109
+ const size = opts?.size ?? DEFAULT_PAGE_SIZE;
110
+ if (size === 0) {
111
+ const all = total === 0
112
+ ? []
113
+ : await db.drizzle.select().from(from).where(condition).orderBy(...order);
114
+ return { items: marshal(all), total };
115
+ }
116
+ const page = opts?.page ?? 0;
117
+ const skip = page * size;
118
+ const rows = total === 0 || skip >= total
119
+ ? []
120
+ : await db.drizzle.select().from(from).where(condition).orderBy(...order)
121
+ .limit(size).offset(skip);
122
+ return { items: marshal(rows), total, page, size };
126
123
  },
124
+ save: async (record, opts) => record.id != null
125
+ ? resource.update(record, opts)
126
+ : resource.create(record, opts),
127
127
  create: async (record, opts) => {
128
128
  if (ID_FIELD in record && record.id == null) {
129
129
  delete record.id;
@@ -131,16 +131,14 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
131
131
  if (record.id != null) {
132
132
  throw new RecordExists('id-present');
133
133
  }
134
- if (opts?.ttl != null) {
135
- throw new UnsupportedArgumentError('ttl');
136
- }
134
+ refuseTtl(opts);
137
135
  return resource.insert(record);
138
136
  },
139
137
  insert: async (record) => {
140
138
  const { db, spec: table, entity: into } = await ensure();
141
139
  const values = recordToValues({ ...resource.getDefaults(), ...record }, table);
142
140
  try {
143
- const rows = await db.drizzle.insert(pgTable(into)).values(values).returning();
141
+ const rows = await db.drizzle.insert(into).values(values).returning();
144
142
  if (rows.length < 1) {
145
143
  throw new RecordUpdateFailed('creation');
146
144
  }
@@ -170,8 +168,8 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
170
168
  throw new UnsupportedArgumentError('upsert:nothing-to-update');
171
169
  }
172
170
  try {
173
- const rows = await db.drizzle.insert(pgTable(into)).values(values)
174
- .onConflictDoUpdate({ target: target, set: set }).returning();
171
+ const rows = await db.drizzle.insert(into).values(values)
172
+ .onConflictDoUpdate({ target, set: set }).returning();
175
173
  if (rows.length < 1) {
176
174
  throw new RecordUpdateFailed('upsert');
177
175
  }
@@ -182,19 +180,19 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
182
180
  }
183
181
  },
184
182
  update: async (record, opts) => {
183
+ refuseTtl(opts);
185
184
  const { db, spec: table, entity: target } = await ensure();
186
- const field = fieldOf(opts) ?? ID_FIELD;
187
- const key = record[field];
185
+ const key = record.id;
188
186
  if (key == null) {
189
- throw new MisshapedRecord(field === ID_FIELD ? ID_FIELD : 'no-field-value');
187
+ throw new MisshapedRecord(ID_FIELD);
190
188
  }
191
189
  /** Replace, not merge — the semantics mongo's `replaceOne` gives. `patch()` merges. */
192
190
  const values = recordToFullValues(record, table);
193
191
  try {
194
- const rows = await db.drizzle.update(pgTable(target)).set(values)
195
- .where(identify(table, field, key)).returning();
192
+ const rows = await db.drizzle.update(target).set(values)
193
+ .where(identify(table, target, ID_FIELD, key)).returning();
196
194
  if (rows.length < 1) {
197
- throw new UnknownRecordError(`${field}:${key}`);
195
+ throw new UnknownRecordError(`${key}`);
198
196
  }
199
197
  return resultToRecord(rows[0], table);
200
198
  }
@@ -203,24 +201,24 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
203
201
  }
204
202
  },
205
203
  patch: async (record, opts) => {
204
+ refuseTtl(opts);
206
205
  const { db, spec: table, entity: target } = await ensure();
207
- const field = (typeof opts === 'string' ? opts : opts?.field) ?? ID_FIELD;
208
- const key = record[field];
206
+ const key = record.id;
209
207
  if (key == null) {
210
- throw new MisshapedRecord(field === ID_FIELD ? ID_FIELD : 'no-field-value');
208
+ throw new MisshapedRecord(ID_FIELD);
211
209
  }
212
210
  const values = recordToValues(record, table);
213
211
  for (const column of table.primaryKey) {
214
212
  delete values[table.byColumn[column]?.property ?? column];
215
213
  }
216
214
  if (Object.keys(values).length < 1) {
217
- return resource.get(`${key}`, field);
215
+ return resource.get(`${key}`);
218
216
  }
219
217
  try {
220
- const rows = await db.drizzle.update(pgTable(target)).set(values)
221
- .where(identify(table, field, key)).returning();
218
+ const rows = await db.drizzle.update(target).set(values)
219
+ .where(identify(table, target, ID_FIELD, key)).returning();
222
220
  if (rows.length < 1) {
223
- throw new UnknownRecordError(`${field}:${key}`);
221
+ throw new UnknownRecordError(`${key}`);
224
222
  }
225
223
  return resultToRecord(rows[0], table);
226
224
  }
@@ -228,42 +226,53 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
228
226
  throw pgErrorToResourceError(error);
229
227
  }
230
228
  },
231
- delete: async (id, opts) => {
229
+ delete: async (id) => {
232
230
  const { db, spec: table, entity: from } = await ensure();
233
- const field = fieldOf(opts) ?? ID_FIELD;
234
- const key = typeof id === 'object' ? id[field] : id;
235
- if (key == null) {
236
- throw new MisshapedRecord(field === ID_FIELD ? ID_FIELD : 'no-field-value');
237
- }
238
231
  /** One statement — mongo's read-then-delete can lose the record between the two. */
239
- const rows = await db.drizzle.delete(pgTable(from))
240
- .where(identify(table, field, key)).returning();
232
+ const rows = await db.drizzle.delete(from)
233
+ .where(identify(table, from, ID_FIELD, id)).returning();
241
234
  return rows.length < 1 ? null : resultToRecord(rows[0], table);
242
235
  },
243
- pick: async (id, opts) => {
244
- const record = await resource.delete(id, opts);
236
+ take: async (id) => {
237
+ const record = await resource.delete(id);
245
238
  if (record == null) {
246
- throw new UnknownRecordError(typeof id === 'string' ? id : (id.id ?? 'unknown'));
239
+ throw new UnknownRecordError(id);
247
240
  }
248
241
  return record;
249
242
  },
250
243
  purge: async (criteria) => {
251
244
  const { db, spec: table, entity: from } = await ensure();
252
- const where = criteriaToSql(criteria, table, from);
253
- if (where == null) {
245
+ const condition = criteriaToSql(criteria, table, from);
246
+ if (condition == null) {
254
247
  /** An empty criteria object here would silently truncate the table. */
255
248
  throw new UnsupportedArgumentError('purge:no-criteria');
256
249
  }
257
- const rows = await db.drizzle.delete(pgTable(from)).where(where).returning();
250
+ const rows = await db.drizzle.delete(from).where(condition).returning();
258
251
  return rows.length;
259
252
  },
260
253
  count: async (criteria) => {
261
254
  const { db, spec: table, entity: from } = await ensure();
262
- const options = prepareListOptions(DEFAULT_PAGE_SIZE, criteria);
263
255
  const rows = await db.drizzle.select({ total: sql `count(*)::int` })
264
- .from(pgTable(from)).where(criteriaToSql(options.criteria, table, from));
256
+ .from(from).where(criteriaToSql(criteria, table, from));
265
257
  return Number(rows[0]?.total ?? 0);
266
258
  },
259
+ countBy: async (criteria, fields) => {
260
+ const { db, spec: table, entity: from } = await ensure();
261
+ if (fields.length < 1 || fields.some(field => field === 'count')) {
262
+ /** `count` names the answer's own tally; grouping by nothing is `count()`. */
263
+ throw new UnsupportedArgumentError(`count-by:${fields.join(',')}`);
264
+ }
265
+ const columns = fields.map(field => columnOf(table, field));
266
+ const selection = Object.fromEntries(columns.map(column => [column.property, from[column.property]]));
267
+ const rows = await db.drizzle
268
+ .select({ ...selection, count: sql `count(*)::int` })
269
+ .from(from).where(criteriaToSql(criteria, table, from))
270
+ .groupBy(...columns.map(column => from[column.property]));
271
+ return rows.map(row => {
272
+ const { count, ...group } = row;
273
+ return { ...resultToRecord(group, table), count: Number(count ?? 0) };
274
+ });
275
+ },
267
276
  getDefaults: () => {
268
277
  const schema = resource.schema;
269
278
  if (schema == null) {
@@ -277,8 +286,8 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
277
286
  return { ...defaults, [key]: property.default };
278
287
  }, {});
279
288
  },
280
- query: async (text, params) => (await raw(text, params)).rows,
281
- queryOne: async (text, params) => (await raw(text, params)).rows[0] ?? null,
289
+ query: (async (text, params) => (await raw(text, params)).rows),
290
+ queryOne: (async (text, params) => (await raw(text, params)).rows[0] ?? null),
282
291
  execute: async (text, params) => (await raw(text, params)).count,
283
292
  select: async (text, params) => {
284
293
  const { spec: table } = await ensure();
@@ -335,21 +344,23 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
335
344
  await postgres.ready();
336
345
  return postgres.client(dbAlias);
337
346
  },
347
+ /** Chainable — the declaration store is keyed by alias, so this object is the whole state. */
338
348
  index: (name, index) => {
339
349
  declaration.indexes.push({ ...index, name });
340
350
  return resource;
341
351
  },
342
- /** `this`-returning in the interface — the implementation returns that very object. */
352
+ /** Self-returning in the interface — the implementation returns that very object. */
343
353
  migration: ((name, apply, stage) => {
344
354
  declaration.migrations.register(name, apply, stage);
345
355
  return resource;
346
356
  }),
347
357
  migrations: () => declaration.migrations
348
- });
358
+ };
359
+ const resource = appendContextual(alias, members);
349
360
  /**
350
- * The AJV schema is stored per alias rather than on the object, so it survives
351
- * `reinitializeContext` — which rebuilds the resource and would otherwise drop a schema
352
- * the app assigned after construction, silently taking the table's structure with it.
361
+ * The AJV schema is stored per alias rather than on the object, so a second maker run for
362
+ * the same alias (a custom maker, a repeated maker, a spec) picks up the schema the app
363
+ * assigned after construction instead of silently taking the table's structure with it.
353
364
  */
354
365
  Object.defineProperty(resource, 'schema', {
355
366
  enumerable: true,
@@ -366,8 +377,7 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
366
377
  });
367
378
  /**
368
379
  * Explicit table name override, decoupled from the registration alias — an alias may
369
- * carry characters no identifier allows. Threaded back through the recursive maker call
370
- * below so it survives a context switch.
380
+ * carry characters no identifier allows.
371
381
  */
372
382
  if (tableName != null) {
373
383
  resource.name = tableName;
@@ -382,12 +392,6 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
382
392
  spec = initialized.spec;
383
393
  entity = initialized.entity;
384
394
  };
385
- resource.reinitializeContext = (context) => {
386
- const replacement = (makeCustomResource?.(dbAlias, serviceAlias)
387
- ?? makePostgresResource(alias, dbAlias, serviceAlias, makeCustomResource, tableName));
388
- replacement.ctx = context;
389
- return replacement;
390
- };
391
395
  return resource;
392
396
  };
393
397
  //# sourceMappingURL=resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}