@metaobjectsdev/codegen-ts 0.16.0 → 0.17.0-rc.1

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 (66) hide show
  1. package/dist/column-mapper.d.ts +10 -0
  2. package/dist/column-mapper.d.ts.map +1 -1
  3. package/dist/column-mapper.js +21 -2
  4. package/dist/column-mapper.js.map +1 -1
  5. package/dist/naming.d.ts +4 -0
  6. package/dist/naming.d.ts.map +1 -1
  7. package/dist/naming.js +6 -0
  8. package/dist/naming.js.map +1 -1
  9. package/dist/projection/build-projection-views.d.ts +5 -1
  10. package/dist/projection/build-projection-views.d.ts.map +1 -1
  11. package/dist/projection/build-projection-views.js +165 -47
  12. package/dist/projection/build-projection-views.js.map +1 -1
  13. package/dist/projection/extract-view-spec.d.ts +8 -1
  14. package/dist/projection/extract-view-spec.d.ts.map +1 -1
  15. package/dist/projection/extract-view-spec.js +430 -29
  16. package/dist/projection/extract-view-spec.js.map +1 -1
  17. package/dist/projection/view-ddl-emit.d.ts.map +1 -1
  18. package/dist/projection/view-ddl-emit.js +142 -25
  19. package/dist/projection/view-ddl-emit.js.map +1 -1
  20. package/dist/projection/view-spec.d.ts +101 -3
  21. package/dist/projection/view-spec.d.ts.map +1 -1
  22. package/dist/templates/drizzle-schema.d.ts.map +1 -1
  23. package/dist/templates/drizzle-schema.js +9 -0
  24. package/dist/templates/drizzle-schema.js.map +1 -1
  25. package/dist/templates/entity-file.d.ts.map +1 -1
  26. package/dist/templates/entity-file.js +39 -3
  27. package/dist/templates/entity-file.js.map +1 -1
  28. package/dist/templates/inferred-types.d.ts +1 -1
  29. package/dist/templates/inferred-types.d.ts.map +1 -1
  30. package/dist/templates/inferred-types.js +13 -1
  31. package/dist/templates/inferred-types.js.map +1 -1
  32. package/dist/templates/projection-decl.d.ts.map +1 -1
  33. package/dist/templates/projection-decl.js +9 -70
  34. package/dist/templates/projection-decl.js.map +1 -1
  35. package/dist/templates/queries-file.d.ts.map +1 -1
  36. package/dist/templates/queries-file.js +117 -43
  37. package/dist/templates/queries-file.js.map +1 -1
  38. package/dist/templates/queries.d.ts +21 -4
  39. package/dist/templates/queries.d.ts.map +1 -1
  40. package/dist/templates/queries.js +48 -12
  41. package/dist/templates/queries.js.map +1 -1
  42. package/dist/templates/view-decl.d.ts +28 -0
  43. package/dist/templates/view-decl.d.ts.map +1 -0
  44. package/dist/templates/view-decl.js +107 -0
  45. package/dist/templates/view-decl.js.map +1 -0
  46. package/dist/templates/zod-validators.d.ts +6 -0
  47. package/dist/templates/zod-validators.d.ts.map +1 -1
  48. package/dist/templates/zod-validators.js +53 -7
  49. package/dist/templates/zod-validators.js.map +1 -1
  50. package/package.json +6 -6
  51. package/src/column-mapper.ts +26 -1
  52. package/src/naming.ts +7 -0
  53. package/src/projection/build-projection-views.ts +211 -50
  54. package/src/projection/extract-view-spec.ts +468 -29
  55. package/src/projection/view-ddl-emit.ts +158 -24
  56. package/src/projection/view-spec.ts +104 -3
  57. package/src/reference/entity.ts +11 -1
  58. package/src/reference/queries.ts +4 -1
  59. package/src/templates/drizzle-schema.ts +7 -0
  60. package/src/templates/entity-file.ts +46 -3
  61. package/src/templates/inferred-types.ts +18 -1
  62. package/src/templates/projection-decl.ts +8 -74
  63. package/src/templates/queries-file.ts +133 -48
  64. package/src/templates/queries.ts +50 -11
  65. package/src/templates/view-decl.ts +128 -0
  66. package/src/templates/zod-validators.ts +54 -9
@@ -5,7 +5,7 @@
5
5
  // isProjection(entity) → renderProjectionDecl (read-only: view declaration + Zod + filter sections)
6
6
  // !hasWritableRdbSource(entity) → renderValueObjectFile (in-memory / transit shape: interface + Zod schema)
7
7
  // vanilla / write-through entity → Drizzle table path
8
- import { joinCode } from "ts-poet";
8
+ import { code, imp, joinCode } from "ts-poet";
9
9
  import { renderDrizzleSchema } from "./drizzle-schema.js";
10
10
  import { renderInferredTypes, renderEnumTypeAliases } from "./inferred-types.js";
11
11
  import { renderZodValidators, isTphSubtype } from "./zod-validators.js";
@@ -14,8 +14,13 @@ import { renderFilterAllowlist, renderSortAllowlist } from "./filter-allowlist.j
14
14
  import { renderFilterType } from "./filter-type.js";
15
15
  import { renderTphDiscriminatorUnion, isTphDiscriminatorBase } from "./tph-discriminator.js";
16
16
  import { GENERATED_HEADER } from "../constants.js";
17
- import { isProjection } from "../projection/projection-detector.js";
17
+ import { isProjection, isWriteThrough } from "../projection/projection-detector.js";
18
18
  import { renderProjectionDecl } from "./projection-decl.js";
19
+ import { projectionViewName } from "../projection/extract-view-spec.js";
20
+ import { renderExistingViewDecl, renderViewReadZodObject } from "./view-decl.js";
21
+ import { renderDocsFor } from "./jsdoc.js";
22
+ import { valueObjectModuleSpecifier } from "../import-path.js";
23
+ import { stripPackage } from "@metaobjectsdev/metadata";
19
24
  import { hasWritableRdbSource } from "../source-detect.js";
20
25
  import { renderValueObjectFile } from "./value-object-file.js";
21
26
  import { isAbstract } from "../instance-artifacts.js";
@@ -74,9 +79,40 @@ export function renderEntityFile(entity, ctx, opts) {
74
79
  // bare `<Base>` type — so the inferred Drizzle row type is emitted as
75
80
  // `<Base>Row` to avoid a duplicate `export type <Base>`.
76
81
  const tphBase = tphBlock !== null && isTphDiscriminatorBase(entity, ctx.loadedRoot);
82
+ // #214 — a write-through entity read-view (FR-024 §7): reads route to the replica
83
+ // VIEW, so the entity file additionally declares the `.existing()` view (carrying the
84
+ // derived fields the write table omits, #213) and a read schema `<Entity>Schema`
85
+ // whose `z.infer` IS the read type <Entity> (dialect-agnostic — a Drizzle view is not
86
+ // a Table, so InferSelectModel/`$inferSelect` don't uniformly apply; the Zod schema's
87
+ // nullability mirrors the view columns exactly like a projection). The write table +
88
+ // Insert/Update stay derived-free. `.existing()` is a runtime-target Drizzle binding,
89
+ // and this path only runs in a runtime target (contract-only/non-writable returned above).
90
+ // A TPH discriminator base owns `export type <Base>` via its discriminated-union block,
91
+ // so it must NOT also emit the view-schema read type (that would be a duplicate-identifier
92
+ // compile error). A base+write-through combo keeps the TPH polymorphic read path (reads
93
+ // the base table); routing its reads through a replica view is a documented non-goal.
94
+ const writeThrough = isWriteThrough(entity) && !tphBase;
95
+ const viewSections = [];
96
+ if (writeThrough) {
97
+ const camel = entity.name.charAt(0).toLowerCase() + entity.name.slice(1);
98
+ const fields = entity.fields();
99
+ const voModule = (refBase) => valueObjectModuleSpecifier(stripPackage(refBase), ctx.packageOf, entity.package, ctx.outputLayout, ctx.extStyle);
100
+ const viewOpts = {
101
+ dialect: ctx.dialect, columnNamingStrategy: ctx.columnNamingStrategy, timestampMode: ctx.timestampMode, voModule,
102
+ };
103
+ const z = imp("z@zod");
104
+ const docs = renderDocsFor(entity);
105
+ const docsPrefix = docs ? `${docs}\n` : "";
106
+ viewSections.push(renderExistingViewDecl(fields, projectionViewName(entity, ctx.columnNamingStrategy), `${camel}View`, viewOpts), code `
107
+ export const ${entity.name}Schema = ${renderViewReadZodObject(fields, viewOpts)};
108
+ `, code `
109
+ ${docsPrefix}export type ${entity.name} = ${z}.infer<typeof ${entity.name}Schema>;
110
+ `);
111
+ }
77
112
  const sections = [
78
113
  renderDrizzleSchema(entity, ctx),
79
- renderInferredTypes(entity, tphBase, ctx),
114
+ ...viewSections,
115
+ renderInferredTypes(entity, tphBase, ctx, writeThrough /* skipRow — read type is the view schema */),
80
116
  ...(enumAliases !== null ? [enumAliases] : []),
81
117
  renderZodValidators(entity, ctx),
82
118
  renderEntityConstants(entity, ctx.apiPrefix),
@@ -1 +1 @@
1
- {"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import type { RenderContext } from "../render-context.js";
10
10
  * to avoid a duplicate `export type <Base>`. Insert/Update keep their names
11
11
  * (no collision); they describe the physical TPH table row shape.
12
12
  */
13
- export declare function renderInferredTypes(entity: MetaObject, tphBase?: boolean, ctx?: RenderContext): Code;
13
+ export declare function renderInferredTypes(entity: MetaObject, tphBase?: boolean, ctx?: RenderContext, skipRow?: boolean): Code;
14
14
  /**
15
15
  * The string-literal-union type-alias name for a `field.enum` field — the SINGLE
16
16
  * source of truth for enum-union naming (reused by the entity inferred-types
@@ -1 +1 @@
1
- {"version":3,"file":"inferred-types.d.ts","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"AASA,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAgCtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,UAAQ,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAkBlG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAK9E;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAiC1F;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CA6B7E;AA8ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAkBxF"}
1
+ {"version":3,"file":"inferred-types.d.ts","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"AASA,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAgCtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,UAAQ,EACf,GAAG,CAAC,EAAE,aAAa,EACnB,OAAO,UAAQ,GACd,IAAI,CA8BN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAK9E;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAiC1F;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CA6B7E;AA8ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAkBxF"}
@@ -24,7 +24,7 @@ import { sharedEnumImportSpecifier, providedEnumImportSpecifier } from "../enum-
24
24
  * to avoid a duplicate `export type <Base>`. Insert/Update keep their names
25
25
  * (no collision); they describe the physical TPH table row shape.
26
26
  */
27
- export function renderInferredTypes(entity, tphBase = false, ctx) {
27
+ export function renderInferredTypes(entity, tphBase = false, ctx, skipRow = false) {
28
28
  // The inferred Row/Insert types reference the Drizzle table var, so they must
29
29
  // resolve to the SAME (possibly overridden) collection name the schema emits.
30
30
  // ctx is optional for bare unit-test calls — those fall back to the default
@@ -37,6 +37,18 @@ export function renderInferredTypes(entity, tphBase = false, ctx) {
37
37
  const docs = renderDocsFor(entity);
38
38
  const docsPrefix = docs ? `${docs}\n` : "";
39
39
  const rowName = tphBase ? `${entity.name}Row` : entity.name;
40
+ // #214 — a write-through entity read-view routes READS to the replica view, so the
41
+ // read row type <Entity> is emitted from the VIEW's read schema (z.infer, carrying
42
+ // the derived fields) by the entity-file composer, NOT here. `skipRow` suppresses
43
+ // the table-inferred Row so there is no duplicate `export type <Entity>` (selectSym
44
+ // then goes unreferenced and ts-poet drops its import). Insert/Update always stay
45
+ // inferred from the write TABLE (derived-free, #213).
46
+ if (skipRow) {
47
+ return code `
48
+ export type ${entity.name}Insert = ${insertSym}<typeof ${varName}>;
49
+ export type ${entity.name}Update = Partial<${entity.name}Insert>;
50
+ `;
51
+ }
40
52
  return code `
41
53
  ${docsPrefix}export type ${rowName} = ${selectSym}<typeof ${varName}>;
42
54
  export type ${entity.name}Insert = ${insertSym}<typeof ${varName}>;
@@ -1 +1 @@
1
- {"version":3,"file":"inferred-types.js","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inferred-types.js","sourceRoot":"","sources":["../../src/templates/inferred-types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAG3F;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,OAAO,GAAG,KAAK,EACf,GAAmB,EACnB,OAAO,GAAG,KAAK;IAEf,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,6BAA6B;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5F,6EAA6E;IAC7E,sFAAsF;IACtF,MAAM,SAAS,GAAG,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5D,mFAAmF;IACnF,mFAAmF;IACnF,kFAAkF;IAClF,oFAAoF;IACpF,kFAAkF;IAClF,sDAAsD;IACtD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;cACD,MAAM,CAAC,IAAI,YAAY,SAAS,WAAW,OAAO;cAClD,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,IAAI;CACvD,CAAC;IACA,CAAC;IACD,OAAO,IAAI,CAAA;EACX,UAAU,eAAe,OAAO,MAAM,SAAS,WAAW,OAAO;cACrD,MAAM,CAAC,IAAI,YAAY,SAAS,WAAW,OAAO;cAClD,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,IAAI;CACvD,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAgB;IACpE,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB,EAAE,GAAmB;IAC3E,uFAAuF;IACvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;YAAE,SAAS;QAEnD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAEnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnB,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,0DAA0D;YAC1D,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QACD,yEAAyE;QACzE,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,2BAA2B,CAAC,GAAI,EAAE,MAAM,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,yBAAyB,CAAC,GAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,MAAM,oBAAoB,GAA2B;IACnD,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,8EAA8E;IAC9E,qEAAqE;IACrE,CAAC,iBAAiB,CAAC,EAAE,QAAQ;IAC7B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,iBAAiB,CAAC,EAAE,QAAQ;IAC7B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,oBAAoB,CAAC,EAAE,QAAQ;IAChC,CAAC,mBAAmB,CAAC,EAAE,QAAQ;IAC/B,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,CAAC,qBAAqB,CAAC,EAAE,QAAQ;IACjC,CAAC,sBAAsB,CAAC,EAAE,QAAQ;IAClC,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAClC,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,uBAAuB,CAAC,EAAE,QAAQ;CACpC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAgB;IACnE,kFAAkF;IAClF,iFAAiF;IACjF,yEAAyE;IACzE,IAAI,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,oBAAoB,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAAkB,EAAE,KAAgB,EAAE,GAAmB;IACrF,wEAAwE;IACxE,8DAA8D;IAC9D,IAAI,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,oBAAoB,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,SAAS,CAAC;IACnE,CAAC;IACD,2EAA2E;IAC3E,gFAAgF;IAChF,2EAA2E;IAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,+EAA+E;YAC/E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,uEAAuE;YACvE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,GAAG;gBACpB,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACjG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,SAAS,CAAC;IACnE,CAAC;IAED,4FAA4F;IAC5F,IAAI,KAAK,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,GAAG;gBACpB,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACjG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAA,kBAAkB,MAAM,GAAG,CAAC;QACzC,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC;QAC3F,OAAO,IAAI,CAAA,kBAAkB,MAAM,GAAG,CAAC;IACzC,CAAC;IAED,2EAA2E;IAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrD,4EAA4E;YAC5E,0EAA0E;YAC1E,uEAAuE;YACvE,sDAAsD;YACtD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;wBAC1B,CAAC,CAAC,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;wBAC/C,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;oBAC1C,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,GAAG,EAAE,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,KAAK,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA,QAAQ,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,MAAM,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAkB,EAAE,GAAmB;IAChF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,KAAK,KAAK,CAAC,IAAI,GAAG,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,OAAO,IAAI,CAAA,GAAG,UAAU,oBAAoB,MAAM,CAAC,IAAI;EACvD,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;;CAE9B,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projection-decl.d.ts","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"AAUA,OAAO,EACM,UAAU,EAAE,KAAK,QAAQ,EAErC,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,kBAAkB,GACvB,MAAM,CAwJR"}
1
+ {"version":3,"file":"projection-decl.d.ts","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"AAUA,OAAO,EACM,UAAU,EAAE,KAAK,QAAQ,EACrC,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,kBAAkB,GACvB,MAAM,CAuFR"}
@@ -7,15 +7,15 @@
7
7
  // - Zod Insert/Update schemas
8
8
  // - Insert/Update types
9
9
  import { code, imp, joinCode } from "ts-poet";
10
- import { MetaField, MetaObject, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, stripPackage, } from "@metaobjectsdev/metadata";
10
+ import { MetaField, MetaObject, } from "@metaobjectsdev/metadata";
11
11
  import { projectionViewName } from "../projection/extract-view-spec.js";
12
12
  import { columnNameFromField, toSnakeCase, pluralize } from "../naming.js";
13
13
  import { GENERATED_HEADER } from "../constants.js";
14
- import { mapColumnType } from "../column-mapper.js";
15
14
  import { valueObjectModuleSpecifier } from "../import-path.js";
16
15
  import { renderFilterAllowlist, renderSortAllowlist } from "./filter-allowlist.js";
17
16
  import { renderFilterType } from "./filter-type.js";
18
- import { inferViewKind, zodTypeFor, currencyMetaFor, labelFor } from "./field-meta.js";
17
+ import { inferViewKind, currencyMetaFor, labelFor } from "./field-meta.js";
18
+ import { renderExistingViewDecl, renderViewReadZodObject } from "./view-decl.js";
19
19
  // ---------------------------------------------------------------------------
20
20
  // Helpers
21
21
  // ---------------------------------------------------------------------------
@@ -53,15 +53,6 @@ export function renderProjectionDecl(projection, root, opts) {
53
53
  const voModule = (refBase) => ctx
54
54
  ? valueObjectModuleSpecifier(refBase, ctx.packageOf, projection.package, ctx.outputLayout, ctx.extStyle)
55
55
  : `./${refBase}.js`;
56
- const objectRefOf = (f) => {
57
- if (f.subType !== FIELD_SUBTYPE_OBJECT)
58
- return undefined;
59
- const ref = f.attr(FIELD_ATTR_OBJECT_REF);
60
- return typeof ref === "string" && ref.length > 0 ? stripPackage(ref) : undefined;
61
- };
62
- const viewFn = dialect === "postgres" ? "pgView" : "sqliteView";
63
- const viewModule = dialect === "postgres" ? "drizzle-orm/pg-core" : "drizzle-orm/sqlite-core";
64
- const viewSym = imp(`${viewFn}@${viewModule}`);
65
56
  const z = imp("z@zod");
66
57
  // Read-model generation needs only the view name — NOT the join/DDL
67
58
  // resolution. Deriving it directly (instead of via extractViewSpec) lets a
@@ -86,53 +77,6 @@ export function renderProjectionDecl(projection, root, opts) {
86
77
  // inherited fields are not duplicated.
87
78
  for (const f of projection.ownFields())
88
79
  allFields.push(f);
89
- // A field.object passthrough carries the value-object's Zod schema (so the
90
- // view's read schema + inferred type expose the VO shape, not z.unknown()).
91
- const zodLines = allFields.map((f) => {
92
- // The read schema's nullability MUST mirror the view column's: a column that
93
- // is not `.notNull()` infers `T | null` in Drizzle's SELECT type, so the Zod
94
- // read type (and thus the generated query's return type) must be `.nullable()`
95
- // too — otherwise `db.select().from(view)` yields `T | null` into a non-null
96
- // `<Name>` field and the generated query fails to compile under strict TS.
97
- const nullable = mapColumnType(f, dialect, columnNamingStrategy, timestampMode)
98
- .modifiers.includes(".notNull()")
99
- ? ""
100
- : ".nullable()";
101
- const refBase = objectRefOf(f);
102
- if (refBase) {
103
- const schemaSym = imp(`${refBase}InsertSchema@${voModule(refBase)}`);
104
- const base = f.resolvedIsArray()
105
- ? code `${z}.array(${schemaSym})`
106
- : code `${schemaSym}`;
107
- return code ` ${f.name}: ${base}${nullable}`;
108
- }
109
- return code ` ${f.name}: ${z}.${zodTypeFor(f).replace(/^z\./, "")}${nullable}`;
110
- });
111
- // Typed view column map for the Drizzle `.existing()` declaration — keyed by
112
- // projection field name, valued by the column builder for the (renamed)
113
- // physical view column, so `db.select().from(<view>)` is typed. Honors
114
- // `@dbColumnType` (e.g. a passthrough of a jsonb column). `.existing()` views
115
- // carry type + physical name only — no PK/default/notNull modifiers.
116
- const viewColumnLines = allFields.map((f) => {
117
- const spec = mapColumnType(f, dialect, columnNamingStrategy, timestampMode);
118
- const colSym = imp(`${spec.fnName}@${spec.importModule}`);
119
- const optsArg = spec.fnOptions && Object.keys(spec.fnOptions).length > 0
120
- ? `, ${JSON.stringify(spec.fnOptions)}`
121
- : "";
122
- // Of the table modifiers, only `.notNull()` carries to an existing view (it
123
- // shapes the SELECT type); `.primaryKey()`/`.default()`/`.references()` are
124
- // table-DDL concerns and invalid on a `.existing()` view declaration.
125
- const notNull = spec.modifiers.includes(".notNull()") ? ".notNull()" : "";
126
- // Narrow a jsonb passthrough to its value-object type — `.$type<VO>()` —
127
- // mirroring the entity column, so the read row is typed (not `unknown`).
128
- let dollarType = "";
129
- const dtr = spec.dollarTypeRef;
130
- if (dtr?.kind === "objectRef") {
131
- const voTypeSym = imp(`${dtr.name}@${voModule(dtr.name)}`);
132
- dollarType = dtr.array ? code `.$type<${voTypeSym}[]>()` : code `.$type<${voTypeSym}>()`;
133
- }
134
- return code ` ${f.name}: ${colSym}(${JSON.stringify(spec.dbName)}${optsArg})${dollarType}${notNull}`;
135
- });
136
80
  const constFieldLines = allFields.map((f) => {
137
81
  const dbCol = columnNameFromField(f.name, columnNamingStrategy);
138
82
  const view = inferViewKind(f);
@@ -149,19 +93,14 @@ export function renderProjectionDecl(projection, root, opts) {
149
93
  const path = pathFromProjectionName(projName);
150
94
  const sections = [
151
95
  ...(includeViewDecl
152
- ? [code `
153
- // View declaration — Drizzle uses this for typed SELECT queries.
154
- // The SQL view is created/managed by migrate-ts; .existing() tells Drizzle
155
- // not to attempt DDL for this declaration.
156
- export const ${camelName}View = ${viewSym}(${JSON.stringify(viewName)}, {
157
- ${joinCode(viewColumnLines, { on: ",\n" })}
158
- }).existing();
159
- `]
96
+ ? [renderExistingViewDecl(allFields, viewName, `${camelName}View`, {
97
+ dialect, columnNamingStrategy, timestampMode, voModule,
98
+ })]
160
99
  : []),
161
100
  code `
162
- export const ${projName}Schema = ${z}.object({
163
- ${joinCode(zodLines, { on: ",\n" })}
164
- });
101
+ export const ${projName}Schema = ${renderViewReadZodObject(allFields, {
102
+ dialect, columnNamingStrategy, timestampMode, voModule,
103
+ })};
165
104
  `,
166
105
  code `
167
106
  export type ${projName} = ${z}.infer<typeof ${projName}Schema>;
@@ -1 +1 @@
1
- {"version":3,"file":"projection-decl.js","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-decl.js","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queries-file.d.ts","sourceRoot":"","sources":["../../src/templates/queries-file.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EAGX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiB1D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAsF7E"}
1
+ {"version":3,"file":"queries-file.d.ts","sourceRoot":"","sources":["../../src/templates/queries-file.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EAGX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAyC1D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAqF7E"}
@@ -4,11 +4,32 @@ import { code, joinCode, imp } from "ts-poet";
4
4
  import { MetaObject, OBJECT_ATTR_DISCRIMINATOR, OBJECT_ATTR_DISCRIMINATOR_VALUE, } from "@metaobjectsdev/metadata";
5
5
  import {} from "../render-context.js";
6
6
  import { entityModuleSpecifier } from "../import-path.js";
7
- import { renderFindByIdFn, renderListFn, renderCreateFn, renderUpdateFn, renderDeleteByIdFn, renderReverseFinderFns, reverseFksFor, getPkInfo, } from "./queries.js";
8
- import { pluralize, findByIdFnName, listFnName } from "../naming.js";
7
+ import { renderFindByIdFn, renderListFn, renderCreateFn, renderInsertPreservingFn, renderUpdateFn, renderDeleteByIdFn, renderReverseFinderFns, reverseFksFor, getPkInfo, getPkFields, } from "./queries.js";
8
+ import { pluralize, findByIdFnName, listFnName, createFnName, insertPreservingFnName, updateFnName } from "../naming.js";
9
9
  import { GENERATED_HEADER } from "../constants.js";
10
10
  import { isTphDiscriminatorBase, tphConcreteSubtypes } from "./tph-discriminator.js";
11
- import { isProjection } from "../projection/projection-detector.js";
11
+ import { isProjection, isWriteThrough } from "../projection/projection-detector.js";
12
+ import { hasAutoSetFields } from "./zod-validators.js";
13
+ /**
14
+ * The dialect-correct Drizzle `Db` type alias + its import — parameter-passed into every
15
+ * generated CRUD helper (ADR-0008), so the signatures `find…(db: Db, …)` typecheck without
16
+ * the consumer importing anything to construct one. Shared by every queries-file renderer.
17
+ * - Postgres: `PgDatabase<…>` is the base every PG driver extends (node-postgres,
18
+ * postgres.js, Neon, Vercel, pglite) — accepts whichever driver the consumer chose.
19
+ * - SQLite: `BaseSQLiteDatabase<"sync" | "async", …>` accepts BOTH sync (better-sqlite3)
20
+ * and async (libsql/Turso/D1) drivers; the generated queries `await` results, valid on either.
21
+ */
22
+ function dbTypeBlock(dialect) {
23
+ return dialect === "postgres"
24
+ ? {
25
+ import: `import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";`,
26
+ alias: `type Db = PgDatabase<PgQueryResultHKT, Record<string, never>>;`,
27
+ }
28
+ : {
29
+ import: `import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";`,
30
+ alias: `type Db = BaseSQLiteDatabase<"sync" | "async", unknown>;`,
31
+ };
32
+ }
12
33
  export function renderQueriesFile(obj, ctx) {
13
34
  // FR-017 Tier 2 — a TPH discriminator base gets a polymorphic queries file:
14
35
  // base reads dispatch through parse<Base>, and per-subtype CRUD targets the
@@ -25,6 +46,12 @@ export function renderQueriesFile(obj, ctx) {
25
46
  if (isProjection(obj)) {
26
47
  return renderProjectionQueriesFile(obj, ctx);
27
48
  }
49
+ // #214 — a write-through entity read-view (FR-024 §7): READS route to the replica
50
+ // view (returning the derived fields), WRITES target the table. A hybrid of the
51
+ // projection read path + the vanilla write path.
52
+ if (isWriteThrough(obj)) {
53
+ return renderWriteThroughQueriesFile(obj, ctx);
54
+ }
28
55
  const entityName = obj.name;
29
56
  // Import the entity's own file. Same target → relative "./Entity"; cross
30
57
  // target → importBase-qualified package path.
@@ -34,32 +61,25 @@ export function renderQueriesFile(obj, ctx) {
34
61
  // helper (ADR-0008). Emit the dialect-correct Drizzle type alias so the
35
62
  // signatures `findXxx(db: Db, ...)` typecheck without the consumer importing
36
63
  // anything to construct one. Consumers pass any compatible Drizzle instance.
37
- const dbTypeImport = ctx.dialect === "postgres"
38
- ? `import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";`
39
- : `import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";`;
40
- const dbTypeAlias = ctx.dialect === "postgres"
41
- // Postgres: the base class every PG driver extends (node-postgres,
42
- // postgres.js, Neon, Vercel, pglite) — not just node-postgres, so any
43
- // PG driver the consumer chose is accepted.
44
- ? `type Db = PgDatabase<PgQueryResultHKT, Record<string, never>>;`
45
- // SQLite: accept BOTH sync (better-sqlite3) and async (libsql/Turso/D1)
46
- // drivers. Generated queries `await` their results, which is valid on
47
- // either result-kind; pinning `<"async">` wrongly rejected better-sqlite3
48
- // (the most common SQLite driver) with "is not assignable".
49
- : `type Db = BaseSQLiteDatabase<"sync" | "async", unknown>;`;
64
+ const { import: dbTypeImport, alias: dbTypeAlias } = dbTypeBlock(ctx.dialect);
65
+ // #203 an @autoSet entity additionally imports its preserving-shape schema
66
+ // and emits the `insertPreserving<Entity>` escape hatch after `create<Entity>`.
67
+ const autoSet = hasAutoSetFields(obj);
68
+ const preservingImport = autoSet ? `, ${entityName}InsertPreservingSchema` : "";
50
69
  // Literal imports (Db type + entity types) live in a code block so they sort
51
70
  // alongside ts-poet's hoisted imp() imports at the top of the body.
52
71
  const literalImports = code `
53
72
  ${dbTypeImport}
54
73
  ${dbTypeAlias}
55
74
 
56
- import { ${varName}, type ${entityName}, type ${entityName}Patch, ${entityName}InsertSchema, ${entityName}UpdateSchema } from ${JSON.stringify(entityFileName)};
75
+ import { ${varName}, type ${entityName}, type ${entityName}Patch, ${entityName}InsertSchema${preservingImport}, ${entityName}UpdateSchema } from ${JSON.stringify(entityFileName)};
57
76
  `;
58
77
  const sections = [
59
78
  literalImports,
60
79
  renderFindByIdFn(obj, ctx),
61
80
  renderListFn(obj, ctx),
62
81
  renderCreateFn(obj, ctx),
82
+ ...(autoSet ? [renderInsertPreservingFn(obj, ctx)] : []),
63
83
  renderUpdateFn(obj, ctx),
64
84
  renderDeleteByIdFn(obj, ctx),
65
85
  ];
@@ -95,19 +115,7 @@ function renderProjectionQueriesFile(obj, ctx) {
95
115
  const entityFileName = entityModuleSpecifier(ctx.selfTarget, ctx.entityModuleTarget, obj.package, entityName, ctx.extStyle);
96
116
  const { fieldName: pkField, tsType: pkType } = getPkInfo(obj, ctx);
97
117
  const eqSym = imp("eq@drizzle-orm");
98
- const dbTypeImport = ctx.dialect === "postgres"
99
- ? `import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";`
100
- : `import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";`;
101
- const dbTypeAlias = ctx.dialect === "postgres"
102
- // Postgres: the base class every PG driver extends (node-postgres,
103
- // postgres.js, Neon, Vercel, pglite) — not just node-postgres, so any
104
- // PG driver the consumer chose is accepted.
105
- ? `type Db = PgDatabase<PgQueryResultHKT, Record<string, never>>;`
106
- // SQLite: accept BOTH sync (better-sqlite3) and async (libsql/Turso/D1)
107
- // drivers. Generated queries `await` their results, which is valid on
108
- // either result-kind; pinning `<"async">` wrongly rejected better-sqlite3
109
- // (the most common SQLite driver) with "is not assignable".
110
- : `type Db = BaseSQLiteDatabase<"sync" | "async", unknown>;`;
118
+ const { import: dbTypeImport, alias: dbTypeAlias } = dbTypeBlock(ctx.dialect);
111
119
  const literalImports = code `
112
120
  ${dbTypeImport}
113
121
  ${dbTypeAlias}
@@ -133,6 +141,84 @@ export async function ${listFnName(entityName)}(db: Db, opts?: { limit?: number;
133
141
  `// Customize via ${entityName}.extra.ts in this directory (additional queries, custom logic).\n`;
134
142
  return header + body;
135
143
  }
144
+ /**
145
+ * #214 — the queries file for a write-through entity read-view (FR-024 §7).
146
+ *
147
+ * Reads (`find<Name>ById`, `list<Plural>`, reverse finders) SELECT from the replica
148
+ * `<camel>View` so they return the derived fields; writes (`create`/`update`/`delete`)
149
+ * target the write TABLE (derived-free, #213). A create/update re-reads the row THROUGH
150
+ * the view by PK — a derived field is only computable via the view's join, so the
151
+ * returned `<Entity>` (view shape) is read-your-writes correct.
152
+ */
153
+ function renderWriteThroughQueriesFile(obj, ctx) {
154
+ const entityName = obj.name;
155
+ const camelName = entityName.charAt(0).toLowerCase() + entityName.slice(1);
156
+ const viewVar = `${camelName}View`;
157
+ const tableVar = ctx.collectionName(entityName);
158
+ const singularVar = camelName;
159
+ const entityFileName = entityModuleSpecifier(ctx.selfTarget, ctx.entityModuleTarget, obj.package, entityName, ctx.extStyle);
160
+ const { fieldName: pkField, tsType: pkType } = getPkInfo(obj, ctx);
161
+ const pkFields = getPkFields(obj);
162
+ const eqSym = imp("eq@drizzle-orm");
163
+ const andSym = imp("and@drizzle-orm");
164
+ const autoSet = hasAutoSetFields(obj);
165
+ const { import: dbTypeImport, alias: dbTypeAlias } = dbTypeBlock(ctx.dialect);
166
+ const preservingImport = autoSet ? `, ${entityName}InsertPreservingSchema` : "";
167
+ const literalImports = code `
168
+ ${dbTypeImport}
169
+ ${dbTypeAlias}
170
+
171
+ import { ${viewVar}, ${tableVar}, type ${entityName}, type ${entityName}Patch, ${entityName}InsertSchema${preservingImport}, ${entityName}UpdateSchema } from ${JSON.stringify(entityFileName)};
172
+ `;
173
+ // The view re-read predicate keyed on ALL primary-key columns of `source` (the
174
+ // insert's returning() row), so a composite PK re-reads the EXACT written row rather
175
+ // than any view row sharing the first key component. `andSym`/`pkFields[i]` are only
176
+ // referenced when the PK is composite, so a single-PK entity emits a bare `eq(...)`.
177
+ const viewByAllPk = (source) => pkFields.length > 1
178
+ ? code `${andSym}(${joinCode(pkFields.map((f) => code `${eqSym}(${viewVar}.${f}, ${source}.${f})`), { on: ", " })})`
179
+ : code `${eqSym}(${viewVar}.${pkField}, ${source}.${pkField})`;
180
+ // A create/insertPreserving writes the table, then reads the persisted row back
181
+ // through the view so the returned <Entity> carries the derived fields.
182
+ const insertReturningView = (fnName, schemaName) => code `
183
+ export async function ${fnName}(db: Db, data: unknown): Promise<${entityName}> {
184
+ const validated = ${schemaName}.parse(data);
185
+ const [${singularVar}] = await db.insert(${tableVar}).values(validated).returning();
186
+ const [row] = await db.select().from(${viewVar}).where(${viewByAllPk(`${singularVar}!`)}).limit(1);
187
+ return row!;
188
+ }
189
+ `;
190
+ const updateFn = code `
191
+ export async function ${updateFnName(entityName)}(db: Db, ${pkField}: ${pkType}, patch: ${entityName}Patch): Promise<${entityName} | null> {
192
+ const validated = ${entityName}UpdateSchema.parse(patch);
193
+ // PATCH-5: an empty patch is a no-op — return the current (view) row.
194
+ if (Object.keys(validated).length === 0) return ${findByIdFnName(entityName)}(db, ${pkField});
195
+ const updated = await db.update(${tableVar}).set(validated).where(${eqSym}(${tableVar}.${pkField}, ${pkField})).returning();
196
+ if (updated.length === 0) return null;
197
+ const [row] = await db.select().from(${viewVar}).where(${eqSym}(${viewVar}.${pkField}, ${pkField})).limit(1);
198
+ return row ?? null;
199
+ }
200
+ `;
201
+ const sections = [
202
+ literalImports,
203
+ // Reads route to the replica view.
204
+ renderFindByIdFn(obj, ctx, viewVar),
205
+ renderListFn(obj, ctx, viewVar),
206
+ // Writes target the table (create/update re-read through the view; delete is boolean).
207
+ insertReturningView(createFnName(entityName), `${entityName}InsertSchema`),
208
+ ...(autoSet ? [insertReturningView(insertPreservingFnName(entityName), `${entityName}InsertPreservingSchema`)] : []),
209
+ updateFn,
210
+ renderDeleteByIdFn(obj, ctx),
211
+ ];
212
+ // Reverse finders are reads → route to the view.
213
+ for (const fk of reverseFksFor(obj)) {
214
+ sections.push(renderReverseFinderFns(obj, fk, ctx, viewVar));
215
+ }
216
+ const body = joinCode(sections, { on: "\n" }).toString();
217
+ const header = `// ${GENERATED_HEADER} — DO NOT EDIT.\n` +
218
+ `// Source metadata: ${entityName} (${obj.fqn()}) — write-through entity read-view (reads → view, writes → table)\n` +
219
+ `// Customize via ${entityName}.extra.ts in this directory (additional queries, custom logic).\n`;
220
+ return header + body;
221
+ }
136
222
  /**
137
223
  * FR-017 Tier 2 — the polymorphic + per-subtype queries file for a TPH base.
138
224
  *
@@ -157,19 +243,7 @@ function renderTphQueriesFile(base, ctx) {
157
243
  const parseSym = imp(`parse${baseName}@${baseFileSpec}`);
158
244
  const eqSym = imp("eq@drizzle-orm");
159
245
  const andSym = imp("and@drizzle-orm");
160
- const dbTypeImport = ctx.dialect === "postgres"
161
- ? `import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";`
162
- : `import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";`;
163
- const dbTypeAlias = ctx.dialect === "postgres"
164
- // Postgres: the base class every PG driver extends (node-postgres,
165
- // postgres.js, Neon, Vercel, pglite) — not just node-postgres, so any
166
- // PG driver the consumer chose is accepted.
167
- ? `type Db = PgDatabase<PgQueryResultHKT, Record<string, never>>;`
168
- // SQLite: accept BOTH sync (better-sqlite3) and async (libsql/Turso/D1)
169
- // drivers. Generated queries `await` their results, which is valid on
170
- // either result-kind; pinning `<"async">` wrongly rejected better-sqlite3
171
- // (the most common SQLite driver) with "is not assignable".
172
- : `type Db = BaseSQLiteDatabase<"sync" | "async", unknown>;`;
246
+ const { import: dbTypeImport, alias: dbTypeAlias } = dbTypeBlock(ctx.dialect);
173
247
  // --- Polymorphic base reads ---
174
248
  const polymorphic = code `
175
249
  export async function find${baseName}ById(db: Db, ${pkField}: ${pkType}): Promise<${baseTypeSym} | null> {
@@ -1 +1 @@
1
- {"version":3,"file":"queries-file.js","sourceRoot":"","sources":["../../src/templates/queries-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries-file.js","sourceRoot":"","sources":["../../src/templates/queries-file.ts"],"names":[],"mappings":"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"}