@fougere/adapter-sql 0.5.0-alpha.1 → 0.7.0-alpha.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.
Files changed (74) hide show
  1. package/README.md +4 -4
  2. package/dist/adapter.schema.json +16 -0
  3. package/dist/check.d.ts +2 -27
  4. package/dist/check.d.ts.map +1 -1
  5. package/dist/check.js +2 -27
  6. package/dist/check.js.map +1 -1
  7. package/dist/crud.d.ts +19 -85
  8. package/dist/crud.d.ts.map +1 -1
  9. package/dist/crud.js +25 -102
  10. package/dist/crud.js.map +1 -1
  11. package/dist/ddl.d.ts +8 -53
  12. package/dist/ddl.d.ts.map +1 -1
  13. package/dist/ddl.js +16 -55
  14. package/dist/ddl.js.map +1 -1
  15. package/dist/dialect.d.ts +7 -50
  16. package/dist/dialect.d.ts.map +1 -1
  17. package/dist/dialect.js +2 -5
  18. package/dist/dialect.js.map +1 -1
  19. package/dist/diff.d.ts +6 -44
  20. package/dist/diff.d.ts.map +1 -1
  21. package/dist/diff.js +20 -50
  22. package/dist/diff.js.map +1 -1
  23. package/dist/fields.d.ts +10 -9
  24. package/dist/fields.d.ts.map +1 -1
  25. package/dist/fields.js +8 -1
  26. package/dist/fields.js.map +1 -1
  27. package/dist/index.d.ts +7 -5
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/order.d.ts +23 -0
  32. package/dist/order.d.ts.map +1 -0
  33. package/dist/order.js +40 -0
  34. package/dist/order.js.map +1 -0
  35. package/dist/query.d.ts +2 -17
  36. package/dist/query.d.ts.map +1 -1
  37. package/dist/query.js +1 -11
  38. package/dist/query.js.map +1 -1
  39. package/dist/setup.d.ts +15 -35
  40. package/dist/setup.d.ts.map +1 -1
  41. package/dist/setup.js +18 -12
  42. package/dist/setup.js.map +1 -1
  43. package/dist/sqlite.d.ts +2 -2
  44. package/dist/sqlite.d.ts.map +1 -1
  45. package/dist/sqlite.js +22 -12
  46. package/dist/sqlite.js.map +1 -1
  47. package/dist/step.d.ts +4 -33
  48. package/dist/step.d.ts.map +1 -1
  49. package/dist/step.js +11 -46
  50. package/dist/step.js.map +1 -1
  51. package/dist/table.d.ts +15 -77
  52. package/dist/table.d.ts.map +1 -1
  53. package/dist/table.js +34 -146
  54. package/dist/table.js.map +1 -1
  55. package/dist/values.d.ts +1 -17
  56. package/dist/values.d.ts.map +1 -1
  57. package/dist/values.js +2 -7
  58. package/dist/values.js.map +1 -1
  59. package/package.json +4 -4
  60. package/src/adapter.schema.json +16 -0
  61. package/src/check.ts +2 -27
  62. package/src/crud.ts +28 -105
  63. package/src/ddl.ts +14 -55
  64. package/src/dialect.ts +7 -50
  65. package/src/diff.ts +18 -50
  66. package/src/fields.ts +17 -8
  67. package/src/index.ts +6 -6
  68. package/src/order.ts +63 -0
  69. package/src/query.ts +2 -17
  70. package/src/setup.ts +33 -37
  71. package/src/sqlite.ts +28 -14
  72. package/src/step.ts +12 -54
  73. package/src/table.ts +42 -185
  74. package/src/values.ts +3 -24
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # @fougere/adapter-sql
2
2
  > Entity → SQL tables, through Kysely
3
3
  The SQL realization of the schema: the tables, the additive migration and the
4
- per-entity scoped ORM. Four dialects — SQLite, PostgreSQL, MySQL, SQL Server.
4
+ per-entity scoped storage. Four dialects — SQLite, PostgreSQL, MySQL, SQL Server.
5
5
 
6
- Validation judges, storage realizes: this ORM decides nothing of its own — it applies
6
+ Validation decides, storage realizes: this storage decides nothing of its own — it applies
7
7
  the `lifecycle` rules on the way in. The shape is still held on this path, twice: the
8
- DDL emits a `CHECK` for `oneOf`, `min` and `max`, and core's `StorageGuard` judges every
9
- write through the port. `orm.client` meets neither.
8
+ DDL emits a `CHECK` for `oneOf`, `min` and `max`, and core's `StorageGuard` validates every
9
+ write through the port. `storage.client` meets neither.
10
10
 
11
11
  ## Installation
12
12
  ```bash
@@ -0,0 +1,16 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "columnType": {
5
+ "type": "object",
6
+ "properties": {
7
+ "sqlite": { "type": "string" },
8
+ "pg": { "type": "string" },
9
+ "mysql": { "type": "string" },
10
+ "mssql": { "type": "string" }
11
+ },
12
+ "additionalProperties": false
13
+ }
14
+ },
15
+ "additionalProperties": false
16
+ }
package/dist/check.d.ts CHANGED
@@ -1,24 +1,4 @@
1
- /**
2
- * Shape → CHECK constraints.
3
- *
4
- * `oneOf`, `min`, `max` were declared on the field and read by the façade alone: a
5
- * handler writing through the ORM put `status: 'brouillon'` in a column that declares
6
- * two values, and nothing said a word. The rule was in the schema; no one held it on
7
- * that path.
8
- *
9
- * So the storage learns what the shape already says. `validate` judges what a client
10
- * proposes; this holds what anyone writes — including us.
11
- *
12
- * Only the keywords a database can decide alone. `pattern` and `format` are left to
13
- * the façade: regex dialects diverge (POSIX here, PCRE there, nothing in SQLite
14
- * without an extension), and a constraint that means something different per engine
15
- * is worse than none.
16
- *
17
- * Every value is inlined with `sql.lit`, not bound: SQLite answers `parameters
18
- * prohibited in CHECK constraints`, and a constraint is part of the schema rather
19
- * than of a query. The values are the author's own literals — `oneOf('draft', …)`,
20
- * `max: 160` — never anything a request carried, and Kysely escapes them.
21
- */
1
+ /** Shape → CHECK constraints. */
22
2
  import { type Expression, type SqlBool } from 'kysely';
23
3
  import type { ColumnDef } from './table.js';
24
4
  /** What a column's shape can be checked for, beyond its type. */
@@ -29,12 +9,7 @@ export interface ShapeBounds {
29
9
  minimum?: number;
30
10
  maximum?: number;
31
11
  }
32
- /**
33
- * The CHECK expression for one column, or nothing when its shape bounds nothing.
34
- *
35
- * A nullable column passes when it holds `null`: `NOT NULL` is the axis that decides
36
- * presence, and stacking the two would make `optional()` unwritable.
37
- */
12
+ /** The CHECK expression for one column, or nothing when its shape bounds nothing. */
38
13
  export declare function checkFor(column: ColumnDef): Expression<SqlBool> | undefined;
39
14
  /** Read the bounds off a field's base shape — the keywords a database can decide. */
40
15
  export declare function boundsOf(shape: Record<string, unknown> | undefined): ShapeBounds | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAuB3E;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAU5F"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAuB3E;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAU5F"}
package/dist/check.js CHANGED
@@ -1,31 +1,6 @@
1
- /**
2
- * Shape → CHECK constraints.
3
- *
4
- * `oneOf`, `min`, `max` were declared on the field and read by the façade alone: a
5
- * handler writing through the ORM put `status: 'brouillon'` in a column that declares
6
- * two values, and nothing said a word. The rule was in the schema; no one held it on
7
- * that path.
8
- *
9
- * So the storage learns what the shape already says. `validate` judges what a client
10
- * proposes; this holds what anyone writes — including us.
11
- *
12
- * Only the keywords a database can decide alone. `pattern` and `format` are left to
13
- * the façade: regex dialects diverge (POSIX here, PCRE there, nothing in SQLite
14
- * without an extension), and a constraint that means something different per engine
15
- * is worse than none.
16
- *
17
- * Every value is inlined with `sql.lit`, not bound: SQLite answers `parameters
18
- * prohibited in CHECK constraints`, and a constraint is part of the schema rather
19
- * than of a query. The values are the author's own literals — `oneOf('draft', …)`,
20
- * `max: 160` — never anything a request carried, and Kysely escapes them.
21
- */
1
+ /** Shape → CHECK constraints. */
22
2
  import { sql } from 'kysely';
23
- /**
24
- * The CHECK expression for one column, or nothing when its shape bounds nothing.
25
- *
26
- * A nullable column passes when it holds `null`: `NOT NULL` is the axis that decides
27
- * presence, and stacking the two would make `optional()` unwritable.
28
- */
3
+ /** The CHECK expression for one column, or nothing when its shape bounds nothing. */
29
4
  export function checkFor(column) {
30
5
  const bounds = column.bounds;
31
6
  if (!bounds)
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,GAAG,EAAiC,MAAM,QAAQ,CAAC;AAY5D;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,kFAAkF;IAClF,+EAA+E;IAC/E,wEAAwE;IACxE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjG,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAS,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAS,GAAG,GAAG,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1E,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,KAA0C;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAgB,CAAC;IAC7F,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAU,EAAE,CAAC;QAC5E,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAW,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,GAAG,EAAiC,MAAM,QAAQ,CAAC;AAY5D,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,kFAAkF;IAClF,+EAA+E;IAC/E,wEAAwE;IACxE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjG,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAS,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAS,GAAG,GAAG,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1E,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,KAA0C;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAgB,CAAC;IAC7F,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAU,EAAE,CAAC;QAC5E,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAW,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
package/dist/crud.d.ts CHANGED
@@ -1,19 +1,6 @@
1
- /**
2
- * SqlEntityOrm — per-entity ORM over Kysely, one implementation for every engine.
3
- *
4
- * Structurally matches @fougere/core's EntityOrm (duck typed, no dep). There is
5
- * no generated table object: Kysely addresses tables and columns by name, so the
6
- * entity stays the only description. The field↔column mapping is explicit rather
7
- * than a global plugin — auth tables carry their own naming and must not be
8
- * rewritten behind the caller's back.
9
- *
10
- * `create` and `update` re-read the row instead of using `RETURNING`: the
11
- * contract is to hand back the COMPLETE row, including defaults realised by SQL.
12
- * That also makes the code identical on MySQL and SQL Server, which have no
13
- * `RETURNING` clause.
14
- */
1
+ /** SqlStorage — per-entity storage over Kysely, one implementation for every engine. */
15
2
  import { type Kysely } from 'kysely';
16
- import { type SchemaView, type SchemaOrCard } from '@fougere/schema';
3
+ import { type SchemaView } from '@fougere/schema';
17
4
  import { type DialectName } from './dialect.js';
18
5
  /** ListOptions — duplicated from @fougere/core to avoid a runtime dep. */
19
6
  interface ListOptions {
@@ -33,7 +20,7 @@ interface ListResult<T> extends Array<T> {
33
20
  interface SelectOption {
34
21
  select?: SchemaView;
35
22
  }
36
- export declare class SqlEntityOrm {
23
+ export declare class SqlStorage {
37
24
  private db;
38
25
  private table;
39
26
  private pk;
@@ -51,11 +38,11 @@ export declare class SqlEntityOrm {
51
38
  private maxBindings;
52
39
  /** How this engine spells an upsert, or `false` when it cannot — see `Dialect.upsert`. */
53
40
  private upsertClause;
54
- constructor(db: Kysely<any>, source: SchemaOrCard, tableName: string, selectFields?: Set<string>, dialect?: DialectName);
55
- /** The Kysely instance this ORM wraps — no judge sits behind it. See EntityOrm.client. */
41
+ constructor(db: Kysely<any>, entity: SchemaView, tableName: string, selectFields?: Set<string>, dialect?: DialectName);
42
+ /** The Kysely instance this storage wraps — no validator sits behind it. See Storage.client. */
56
43
  get client(): Kysely<any>;
57
- /** Returns a scoped ORM that restricts all read results to the fields of the given schema. */
58
- output(schema: SchemaView): SqlEntityOrm;
44
+ /** Returns a scoped storage that restricts all read results to the fields of the given schema. */
45
+ output(schema: SchemaView): SqlStorage;
59
46
  private resolveSelect;
60
47
  private column;
61
48
  /** The value a driver can bind — `true` becomes 1, a Date becomes its ISO string. */
@@ -64,60 +51,22 @@ export declare class SqlEntityOrm {
64
51
  private toRow;
65
52
  /** Column keys → entity keys, and column values → the values the entity declares. */
66
53
  private fromRow;
67
- /**
68
- * Apply a primary-key filter (simple or composite).
69
- *
70
- * The key crosses to the column exactly like every other value — `whereAll` states
71
- * the rule two lines below and this did not follow it. It cost nothing while every
72
- * generated key was a string; a key that holds a Date (`primary(created())`) inserted
73
- * fine and then failed its own re-read, with the row already persisted.
74
- */
54
+ /** Apply a primary-key filter (simple or composite). */
75
55
  private wherePk;
76
56
  private whereAll;
77
57
  list(options?: ListOptions & SelectOption & {
78
58
  where?: Record<string, unknown>;
79
59
  }): Promise<ListResult<Record<string, unknown>>>;
80
60
  /**
81
- * One query for N keys, never N queries — what every page-level read stands on:
82
- * a computed field, a relation, a resolver on the other side of a wire.
83
- *
84
- * A composite key has no list form: it is refused by name rather than answering a
85
- * partial result that reads as complete.
61
+ * One query for N keys, never N queries — what every page-level read stands on: a computed
62
+ * field, a relation, a resolver on the other side of a wire.
86
63
  */
87
64
  findByKeys(ids: readonly string[], options?: SelectOption): Promise<Map<string, Record<string, unknown>>>;
88
- /**
89
- * The other direction of a relation, in one query — see the port's `findAllByKeys`.
90
- *
91
- * The grouping key is read off the ROW rather than trusted from the request: a codec
92
- * may write a value one way and read it back another, and a group keyed on the
93
- * request's spelling would then be empty while the rows sit there.
94
- */
65
+ /** The other direction of a relation, in one query — see the port's `findAllByKeys`. */
95
66
  findAllByKeys(field: string, keys: readonly string[], options?: SelectOption): Promise<Map<string, Record<string, unknown>[]>>;
96
- /**
97
- * Write the row, or make the existing one look like this — one statement.
98
- *
99
- * The gesture an import needs and the port did not have: `create` throws on the
100
- * second run (`UNIQUE constraint failed`), so re-reading anything meant deleting
101
- * first. Measured pulling 500 rows from an API twice.
102
- *
103
- * Both lifecycles are realized, each on the side it belongs to: `applyCreate` fills
104
- * what a first write owes (a generated key, `created()`, a declared default) and
105
- * `applyUpdate` stamps what every write owes (`updated()`). On conflict the key and
106
- * the creation stamps are left alone — a row keeps the moment it appeared, whatever
107
- * later overwrites say.
108
- */
67
+ /** Write the row, or make the existing one look like this — one statement. */
109
68
  upsert(input: Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown>>;
110
- /**
111
- * Upsert a whole page in one statement — what an import writes through.
112
- *
113
- * Row by row, 500 rows were 500 statements (measured pulling an API); the shape of
114
- * an import is a page, so the write should be one too. Sliced like every other batch,
115
- * but by rows × COLUMNS: a statement binds values, not rows, so the ceiling divides.
116
- *
117
- * Answers how many rows were written and not the rows themselves. `create` hands back
118
- * the complete row because a caller acts on it; an import acts on none of them, and
119
- * re-reading a page to satisfy a symmetry nobody uses would double the work.
120
- */
69
+ /** Upsert a whole page in one statement — what an import writes through. */
121
70
  upsertAll(inputs: readonly Record<string, unknown>[], _options?: SelectOption): Promise<number>;
122
71
  /**
123
72
  * The COLUMNS a later write must not touch: the key, and a stamp that is create-only.
@@ -127,38 +76,23 @@ export declare class SqlEntityOrm {
127
76
  findById(id: string | Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown> | undefined>;
128
77
  findBy(criteria: Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown> | undefined>;
129
78
  findAllBy(criteria: Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown>[]>;
130
- /**
131
- * One criteria object per statement — the oversized set is the one that splits.
132
- *
133
- * Only ONE criterion may be split: two split sets would need their cross product,
134
- * which is a different query, so the second is refused rather than silently wrong.
135
- */
79
+ /** One criteria object per statement — the oversized set is the one that splits. */
136
80
  private refuseOversized;
137
81
  private splitCriteria;
138
82
  create(input: Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown>>;
139
83
  update(id: string | Record<string, unknown>, input: Record<string, unknown>, options?: SelectOption): Promise<Record<string, unknown>>;
140
84
  /**
141
- * A duplicate is an ANSWER, not a failure — so it leaves as `CONFLICT` and not as the
142
- * blank `Internal error` a caller used to get. The engine's own wording never travels:
143
- * it names a table and a constraint, which is our schema and not the caller's business.
144
- *
145
- * Only the dialect can recognize it; this method knows no engine, which is the rule
146
- * `dialect.ts` exists to keep.
85
+ * A duplicate is an ANSWER, not a failure — so it leaves as `CONFLICT` and not as the blank
86
+ * `Internal error` a caller used to get.
147
87
  */
148
88
  private refusal;
149
89
  delete(id: string | Record<string, unknown>): Promise<boolean>;
150
90
  }
151
- export interface OrmFactoryOptions {
91
+ export interface StorageFactoryOptions {
152
92
  /** Override table name resolution. Default: camelCase → snake_case + 's'. */
153
93
  tableName?: (entityName: string) => string;
154
94
  }
155
- /**
156
- * Create an OrmFactory backed by Kysely — same call shape on every engine.
157
- *
158
- * ```ts
159
- * const app = await createApp({ createContainer, ormFactory: createOrmFactory(db) });
160
- * ```
161
- */
162
- export declare function createOrmFactory(db: Kysely<any>, options?: OrmFactoryOptions, dialect?: DialectName): (entity: SchemaOrCard, name: string) => SqlEntityOrm;
95
+ /** Create a StorageFactory backed by Kysely — same call shape on every engine. */
96
+ export declare function createStorageFactory(db: Kysely<any>, options?: StorageFactoryOptions, dialect?: DialectName): (entity: SchemaView, name: string) => SqlStorage;
163
97
  export {};
164
98
  //# sourceMappingURL=crud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
package/dist/crud.js CHANGED
@@ -1,34 +1,14 @@
1
1
  import { Lifecycle, Role } from '@fougere/schema';
2
- /**
3
- * SqlEntityOrm — per-entity ORM over Kysely, one implementation for every engine.
4
- *
5
- * Structurally matches @fougere/core's EntityOrm (duck typed, no dep). There is
6
- * no generated table object: Kysely addresses tables and columns by name, so the
7
- * entity stays the only description. The field↔column mapping is explicit rather
8
- * than a global plugin — auth tables carry their own naming and must not be
9
- * rewritten behind the caller's back.
10
- *
11
- * `create` and `update` re-read the row instead of using `RETURNING`: the
12
- * contract is to hand back the COMPLETE row, including defaults realised by SQL.
13
- * That also makes the code identical on MySQL and SQL Server, which have no
14
- * `RETURNING` clause.
15
- */
2
+ /** SqlStorage — per-entity storage over Kysely, one implementation for every engine. */
16
3
  import { sql } from 'kysely';
17
- import { applyCreate, applyUpdate, schemaOf } from '@fougere/schema';
4
+ import { applyCreate, applyUpdate } from '@fougere/schema';
18
5
  import { toTable, toTableName } from './table.js';
19
6
  import { resolveDialect } from './dialect.js';
20
7
  // The contract entry and not the main one: `FougereError` crosses a process boundary and
21
8
  // lives there for that reason, and this package must not drag the boot to raise one.
22
9
  import { FougereError, ErrorCode } from '@fougere/core/contract';
23
10
  import { codecsOf } from './values.js';
24
- /**
25
- * The primary key, read off the role axis.
26
- *
27
- * Used to answer "what identifies a row" — where to point a WHERE, what a cursor
28
- * carries. The generated ids and managed timestamps that used to be computed here
29
- * moved to `applyCreate`/`applyUpdate` (`@fougere/schema`): nothing in them was about
30
- * SQL, and every other storage was re-deriving them from scratch.
31
- */
11
+ /** The primary key, read off the role axis. */
32
12
  function analyzeFields(entity) {
33
13
  const pkNames = Object.entries(entity.getFields())
34
14
  .filter(([, field]) => Role.of(field).isPrimary)
@@ -60,7 +40,7 @@ function pickList(list, keys) {
60
40
  result.hasMore = list.hasMore;
61
41
  return result;
62
42
  }
63
- export class SqlEntityOrm {
43
+ export class SqlStorage {
64
44
  db;
65
45
  table;
66
46
  pk;
@@ -78,16 +58,12 @@ export class SqlEntityOrm {
78
58
  maxBindings;
79
59
  /** How this engine spells an upsert, or `false` when it cannot — see `Dialect.upsert`. */
80
60
  upsertClause;
81
- constructor(db, source, tableName, selectFields, dialect = 'sqlite') {
61
+ constructor(db, entity, tableName, selectFields, dialect = 'sqlite') {
82
62
  this.db = db;
83
63
  const resolved = resolveDialect(dialect);
84
64
  this.dialect = resolved;
85
65
  this.maxBindings = resolved.maxBindings;
86
66
  this.upsertClause = resolved.upsert;
87
- // Normalized once: the table projection and the axis analysis below both read the
88
- // schema, and a card handed to each separately would be rebuilt twice into two
89
- // unrelated field objects. Past this line nothing knows which form arrived.
90
- const entity = schemaOf(source);
91
67
  this.table = toTable(tableName, entity);
92
68
  for (const column of this.table.columns) {
93
69
  this.toColumn.set(column.field, column.name);
@@ -98,11 +74,11 @@ export class SqlEntityOrm {
98
74
  this.fields = entity.getFields();
99
75
  this.selectFields = selectFields;
100
76
  }
101
- /** The Kysely instance this ORM wraps — no judge sits behind it. See EntityOrm.client. */
77
+ /** The Kysely instance this storage wraps — no validator sits behind it. See Storage.client. */
102
78
  get client() {
103
79
  return this.db;
104
80
  }
105
- /** Returns a scoped ORM that restricts all read results to the fields of the given schema. */
81
+ /** Returns a scoped storage that restricts all read results to the fields of the given schema. */
106
82
  output(schema) {
107
83
  const scoped = Object.create(this);
108
84
  scoped.selectFields = new Set(Object.keys(schema.getFields()));
@@ -136,18 +112,11 @@ export class SqlEntityOrm {
136
112
  }
137
113
  return data;
138
114
  }
139
- /**
140
- * Apply a primary-key filter (simple or composite).
141
- *
142
- * The key crosses to the column exactly like every other value — `whereAll` states
143
- * the rule two lines below and this did not follow it. It cost nothing while every
144
- * generated key was a string; a key that holds a Date (`primary(created())`) inserted
145
- * fine and then failed its own re-read, with the row already persisted.
146
- */
115
+ /** Apply a primary-key filter (simple or composite). */
147
116
  wherePk(query, id) {
148
117
  if (this.pk.isComposite) {
149
- const obj = id;
150
- return this.pk.names.reduce((q, name) => q.where(this.column(name), '=', this.write(name, obj[name])), query);
118
+ const composite = id;
119
+ return this.pk.names.reduce((q, name) => q.where(this.column(name), '=', this.write(name, composite[name])), query);
151
120
  }
152
121
  const name = this.pk.names[0];
153
122
  return query.where(this.column(name), '=', this.write(name, id));
@@ -224,11 +193,8 @@ export class SqlEntityOrm {
224
193
  return sel ? pickList(result, sel) : result;
225
194
  }
226
195
  /**
227
- * One query for N keys, never N queries — what every page-level read stands on:
228
- * a computed field, a relation, a resolver on the other side of a wire.
229
- *
230
- * A composite key has no list form: it is refused by name rather than answering a
231
- * partial result that reads as complete.
196
+ * One query for N keys, never N queries — what every page-level read stands on: a computed
197
+ * field, a relation, a resolver on the other side of a wire.
232
198
  */
233
199
  async findByKeys(ids, options) {
234
200
  if (this.pk.isComposite) {
@@ -254,13 +220,7 @@ export class SqlEntityOrm {
254
220
  }
255
221
  return found;
256
222
  }
257
- /**
258
- * The other direction of a relation, in one query — see the port's `findAllByKeys`.
259
- *
260
- * The grouping key is read off the ROW rather than trusted from the request: a codec
261
- * may write a value one way and read it back another, and a group keyed on the
262
- * request's spelling would then be empty while the rows sit there.
263
- */
223
+ /** The other direction of a relation, in one query — see the port's `findAllByKeys`. */
264
224
  async findAllByKeys(field, keys, options) {
265
225
  const grouped = new Map();
266
226
  if (keys.length === 0)
@@ -268,27 +228,15 @@ export class SqlEntityOrm {
268
228
  const rows = await this.findAllBy({ [field]: [...keys] }, options);
269
229
  for (const row of rows) {
270
230
  const key = String(row[field]);
271
- const held = grouped.get(key);
272
- if (held)
273
- held.push(row);
231
+ const bucket = grouped.get(key);
232
+ if (bucket)
233
+ bucket.push(row);
274
234
  else
275
235
  grouped.set(key, [row]);
276
236
  }
277
237
  return grouped;
278
238
  }
279
- /**
280
- * Write the row, or make the existing one look like this — one statement.
281
- *
282
- * The gesture an import needs and the port did not have: `create` throws on the
283
- * second run (`UNIQUE constraint failed`), so re-reading anything meant deleting
284
- * first. Measured pulling 500 rows from an API twice.
285
- *
286
- * Both lifecycles are realized, each on the side it belongs to: `applyCreate` fills
287
- * what a first write owes (a generated key, `created()`, a declared default) and
288
- * `applyUpdate` stamps what every write owes (`updated()`). On conflict the key and
289
- * the creation stamps are left alone — a row keeps the moment it appeared, whatever
290
- * later overwrites say.
291
- */
239
+ /** Write the row, or make the existing one look like this — one statement. */
292
240
  async upsert(input, options) {
293
241
  if (this.upsertClause === false) {
294
242
  throw new Error(`${this.table.name}.upsert(): this engine has no upsert clause — read with findById ` +
@@ -313,17 +261,7 @@ export class SqlEntityOrm {
313
261
  : data[this.pk.names[0]];
314
262
  return (await this.findById(id, options));
315
263
  }
316
- /**
317
- * Upsert a whole page in one statement — what an import writes through.
318
- *
319
- * Row by row, 500 rows were 500 statements (measured pulling an API); the shape of
320
- * an import is a page, so the write should be one too. Sliced like every other batch,
321
- * but by rows × COLUMNS: a statement binds values, not rows, so the ceiling divides.
322
- *
323
- * Answers how many rows were written and not the rows themselves. `create` hands back
324
- * the complete row because a caller acts on it; an import acts on none of them, and
325
- * re-reading a page to satisfy a symmetry nobody uses would double the work.
326
- */
264
+ /** Upsert a whole page in one statement — what an import writes through. */
327
265
  async upsertAll(inputs, _options) {
328
266
  if (this.upsertClause === false) {
329
267
  throw new Error(`${this.table.name}.upsertAll(): this engine has no upsert clause — write the rows ` +
@@ -391,12 +329,7 @@ export class SqlEntityOrm {
391
329
  }
392
330
  return out;
393
331
  }
394
- /**
395
- * One criteria object per statement — the oversized set is the one that splits.
396
- *
397
- * Only ONE criterion may be split: two split sets would need their cross product,
398
- * which is a different query, so the second is refused rather than silently wrong.
399
- */
332
+ /** One criteria object per statement — the oversized set is the one that splits. */
400
333
  refuseOversized(criteria, op) {
401
334
  for (const [key, value] of Object.entries(criteria)) {
402
335
  if (!Array.isArray(value) || new Set(value).size <= this.maxBindings)
@@ -425,7 +358,7 @@ export class SqlEntityOrm {
425
358
  // writer that is not us, the way a CHECK does; nothing depends on it any more.
426
359
  const data = applyCreate(this.fields, input);
427
360
  await this.refusal(() => this.db.insertInto(this.table.name).values(this.toRow(data)).execute());
428
- // Contract: create returns the COMPLETE row (validation judges absence, it
361
+ // Contract: create returns the COMPLETE row (validation validates absence, it
429
362
  // never fills) — re-read so SQL-realised defaults appear. Same move as update().
430
363
  const id = this.pk.isComposite
431
364
  ? Object.fromEntries(this.pk.names.map((n) => [n, data[n]]))
@@ -444,12 +377,8 @@ export class SqlEntityOrm {
444
377
  return sel ? pick(result, sel) : result;
445
378
  }
446
379
  /**
447
- * A duplicate is an ANSWER, not a failure — so it leaves as `CONFLICT` and not as the
448
- * blank `Internal error` a caller used to get. The engine's own wording never travels:
449
- * it names a table and a constraint, which is our schema and not the caller's business.
450
- *
451
- * Only the dialect can recognize it; this method knows no engine, which is the rule
452
- * `dialect.ts` exists to keep.
380
+ * A duplicate is an ANSWER, not a failure — so it leaves as `CONFLICT` and not as the blank
381
+ * `Internal error` a caller used to get.
453
382
  */
454
383
  async refusal(write) {
455
384
  try {
@@ -473,15 +402,9 @@ export class SqlEntityOrm {
473
402
  return true;
474
403
  }
475
404
  }
476
- /**
477
- * Create an OrmFactory backed by Kysely — same call shape on every engine.
478
- *
479
- * ```ts
480
- * const app = await createApp({ createContainer, ormFactory: createOrmFactory(db) });
481
- * ```
482
- */
483
- export function createOrmFactory(db, options, dialect = 'sqlite') {
405
+ /** Create a StorageFactory backed by Kysely — same call shape on every engine. */
406
+ export function createStorageFactory(db, options, dialect = 'sqlite') {
484
407
  const resolve = options?.tableName ?? toTableName;
485
- return (entity, name) => new SqlEntityOrm(db, entity, resolve(name), undefined, dialect);
408
+ return (entity, name) => new SqlStorage(db, entity, resolve(name), undefined, dialect);
486
409
  }
487
410
  //# sourceMappingURL=crud.js.map
package/dist/crud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}