@metaobjectsdev/codegen-ts 0.17.0 → 0.17.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file.d.ts","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"routes-file.d.ts","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAyL/E"}
|
|
@@ -20,7 +20,7 @@ import {} from "../render-context.js";
|
|
|
20
20
|
import { crossEntitySpecifier, entityModuleSpecifier, relativeModuleSpecifier } from "../import-path.js";
|
|
21
21
|
import { GENERATED_HEADER } from "../constants.js";
|
|
22
22
|
import { routesHandlerName } from "../naming.js";
|
|
23
|
-
import { isProjection } from "../projection/projection-detector.js";
|
|
23
|
+
import { isProjection, isWriteThrough } from "../projection/projection-detector.js";
|
|
24
24
|
import { isTphDiscriminatorBase, tphPlan } from "./tph-discriminator.js";
|
|
25
25
|
export function renderRoutesFile(entity, ctx) {
|
|
26
26
|
// FR-017 Tier 2 — a TPH discriminator base mounts polymorphic list/get at the
|
|
@@ -100,6 +100,16 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
100
100
|
}
|
|
101
101
|
// --- Vanilla / write-through entity path: full CRUD routes ---
|
|
102
102
|
const tableVar = ctx.collectionName(entityName);
|
|
103
|
+
// #214 — a write-through entity (writable table + replica @kind:view + derived
|
|
104
|
+
// origin.passthrough fields) keeps FULL CRUD (writes → table) but its READS must
|
|
105
|
+
// route through the replica view so the HTTP responses carry the derived field.
|
|
106
|
+
// The entity file already exports `<camel>View` as an `.existing()` Drizzle view;
|
|
107
|
+
// import it and pass it as `readView` to mountCrudRoutes. A vanilla entity omits both.
|
|
108
|
+
const writeThrough = isWriteThrough(entity);
|
|
109
|
+
const camelName = entityName.charAt(0).toLowerCase() + entityName.slice(1);
|
|
110
|
+
const viewImportLine = writeThrough ? `\n ${camelName}View,` : "";
|
|
111
|
+
const readViewLinePrefixed = writeThrough ? `\n readView: ${camelName}View,` : "";
|
|
112
|
+
const readViewLineFlat = writeThrough ? `\n readView: ${camelName}View,` : "";
|
|
103
113
|
const FastifyInstanceSym = imp("t:FastifyInstance@fastify");
|
|
104
114
|
const mountCrudRoutesSym = imp("mountCrudRoutes@@metaobjectsdev/runtime-ts/drizzle-fastify");
|
|
105
115
|
// FR-018 M:N traversal: for each many-to-many navigation declared on this
|
|
@@ -116,7 +126,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
116
126
|
import { db } from ${JSON.stringify(dbImportSpec)};
|
|
117
127
|
import {
|
|
118
128
|
${entityName},
|
|
119
|
-
${tableVar}
|
|
129
|
+
${tableVar},${viewImportLine}
|
|
120
130
|
${entityName}InsertSchema,
|
|
121
131
|
${entityName}UpdateSchema,
|
|
122
132
|
${entityName}FilterAllowlist,
|
|
@@ -139,7 +149,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
139
149
|
fastify: instance,
|
|
140
150
|
path: ${entityName}.$path,
|
|
141
151
|
db,
|
|
142
|
-
table: ${tableVar}
|
|
152
|
+
table: ${tableVar},${readViewLinePrefixed}
|
|
143
153
|
insertSchema: ${entityName}InsertSchema,
|
|
144
154
|
updateSchema: ${entityName}UpdateSchema,
|
|
145
155
|
filterAllowlist: ${entityName}FilterAllowlist,
|
|
@@ -163,7 +173,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
163
173
|
fastify,
|
|
164
174
|
path: ${entityName}.$path,
|
|
165
175
|
db,
|
|
166
|
-
table: ${tableVar}
|
|
176
|
+
table: ${tableVar},${readViewLineFlat}
|
|
167
177
|
insertSchema: ${entityName}InsertSchema,
|
|
168
178
|
updateSchema: ${entityName}UpdateSchema,
|
|
169
179
|
filterAllowlist: ${entityName}FilterAllowlist,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,kBAAkB;AAClB,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,uBAAuB;AACvB,8DAA8D;AAC9D,mEAAmE;AACnE,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,kBAAkB;AAClB,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,uBAAuB;AACvB,8DAA8D;AAC9D,mEAAmE;AACnE,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,GAAkB;IACrE,8EAA8E;IAC9E,kEAAkE;IAClE,wEAAwE;IACxE,gDAAgD;IAChD,IAAI,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClD,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,cAAc,GAAG,qBAAqB,CAC1C,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,kBAAkB,EACtB,MAAM,CAAC,OAAO,EACd,UAAU,EACV,GAAG,CAAC,QAAQ,CACb,CAAC;IACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE7F,MAAM,MAAM,GACV,MAAM,gBAAgB,mBAAmB;QACzC,uBAAuB,UAAU,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK;QACvD,oBAAoB,UAAU,kEAAkE,CAAC;IAEnG,iEAAiE;IACjE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC5D,MAAM,0BAA0B,GAAG,GAAG,CACpC,oEAAoE,CACrE,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAA;qBACV,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;IAE7C,UAAU;IACV,SAAS;IACT,UAAU;IACV,UAAU;SACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;CACtC,CAAC;QAEE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS;YACxB,CAAC,CAAC,IAAI,CAAA;;wCAE4B,UAAU;;;;;;wBAM1B,WAAW,aAAa,kBAAkB;;MAE5D,0BAA0B;;cAElB,UAAU;;cAEV,SAAS;yBACE,UAAU;uBACZ,UAAU;iBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;iBAE3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAE7C;YACK,CAAC,CAAC,IAAI,CAAA;;wCAE4B,UAAU;;;;;;wBAM1B,WAAW,aAAa,kBAAkB;IAC9D,0BAA0B;;YAElB,UAAU;;YAEV,SAAS;uBACE,UAAU;qBACZ,UAAU;eAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;;CAGzC,CAAC;QAEE,OAAO,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED,gEAAgE;IAChE,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAEhD,+EAA+E;IAC/E,iFAAiF;IACjF,gFAAgF;IAChF,kFAAkF;IAClF,uFAAuF;IACvF,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,oBAAoB,GAAG,YAAY,CAAC,CAAC,CAAC,qBAAqB,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAE7F,0EAA0E;IAC1E,8EAA8E;IAC9E,+EAA+E;IAC/E,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC/D,CAAC,CAAC,EAAmD,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CACvF,CAAC;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,IAAI,CAAA;qBACR,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;IAE7C,UAAU;IACV,QAAQ,IAAI,cAAc;IAC1B,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;SACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;CACtC,CAAC;IAEA,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS;QACxB,CAAC,CAAC,IAAI,CAAA;;6CAEmC,UAAU;;;;;;;wBAO/B,WAAW,aAAa,kBAAkB;;MAE5D,kBAAkB;;cAEV,UAAU;;eAET,QAAQ,IAAI,oBAAoB;sBACzB,UAAU;sBACV,UAAU;yBACP,UAAU;uBACZ,UAAU;iBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;EAE1C,iBAAiB,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAEjE;QACG,CAAC,CAAC,IAAI,CAAA;;6CAEmC,UAAU;;;;;;;wBAO/B,WAAW,aAAa,kBAAkB;IAC9D,kBAAkB;;YAEV,UAAU;;aAET,QAAQ,IAAI,gBAAgB;oBACrB,UAAU;oBACV,UAAU;uBACP,UAAU;qBACZ,UAAU;eAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;EAExC,aAAa;CACd,CAAC;IAEA,OAAO,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,OAAkE,EAClE,MAAkB,EAClB,GAAkB,EAClB,UAAkB;IAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAA,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;CAC1D,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,KAAiD,EACjD,MAAkB,EAClB,GAAkB,EAClB,UAAkB;IAElB,MAAM,cAAc,GAAG,GAAG,CACxB,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,oBAAoB,CACjE,GAAG,CAAC,YAAY,EAChB,MAAM,CAAC,OAAO,EACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EACvC,KAAK,CAAC,cAAc,EACpB,GAAG,CAAC,QAAQ,CACb,EAAE,CACJ,CAAC;IACF,MAAM,YAAY,GAAG,GAAG,CACtB,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAC/D,GAAG,CAAC,YAAY,EAChB,MAAM,CAAC,OAAO,EACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EACrC,KAAK,CAAC,YAAY,EAClB,GAAG,CAAC,QAAQ,CACb,EAAE,CACJ,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,eAAgB,EAAE,GAAG,CAAC;QAC9D,CAAC,CAAC,KAAK,CAAC,eAAgB,CAAC;IAC3B,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,eAAgB,EAAE,GAAG,CAAC;QAC9D,CAAC,CAAC,KAAK,CAAC,eAAgB,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,IAAI,IAAI,EAAE,GAAG,CAAC;QAC1F,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,IAAI,CAAA,KAAK,gBAAgB;eACnB,UAAU;YACb,MAAM,CAAC,IAAI;oBACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;qBAEzB,cAAc;mBAChB,YAAY;oBACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;sBAC1B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;iBACnC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;MAC7C,CAAC;AACP,CAAC;AAED,iFAAiF;AACjF,SAAS,qBAAqB,CAAC,MAAkB,EAAE,SAAiB,EAAE,GAAkB;IACtF,0EAA0E;IAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,mBAAmB,CAAC,IAAgB,EAAE,GAAkB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,kFAAkF;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,qBAAqB,CACxC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAC7E,CAAC;IACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE3F,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,QAAQ,iBAAiB,YAAY,EAAE,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAI,CAAA;MACpB,kBAAkB;iBACP,UAAU;cACb,YAAY;YACd,KAAK;eACF,QAAQ;sBACD,aAAa;sBACb,aAAa;yBACV,aAAa;uBACf,WAAW;iBACjB,UAAU;;QAEnB,CAAC;IAEP,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QAChG,MAAM,WAAW,GAAG,qBAAqB,CACvC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAC5E,CAAC;QACF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACnE,6EAA6E;QAC7E,8EAA8E;QAC9E,qEAAqE;QACrE,kFAAkF;QAClF,iFAAiF;QACjF,yEAAyE;QACzE,kFAAkF;QAClF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACnE,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,mBAAmB,WAAW,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAA;MACT,kBAAkB;iBACP,UAAU;cACb,YAAY,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;YACvD,KAAK;eACF,QAAQ;sBACD,YAAY,WAAW,SAAS;sBAChC,YAAY;yBACT,YAAY;uBACd,UAAU;iBAChB,UAAU;iCACM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACnF,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS;QACtB,CAAC,CAAC,IAAI,CAAA;;4DAEkD,QAAQ;;SAE3D,QAAQ;MACX,QAAQ;;wBAEU,WAAW,aAAa,kBAAkB;;EAEhE,MAAM;iBACS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAE7C;QACG,CAAC,CAAC,IAAI,CAAA;;4DAEkD,QAAQ;;SAE3D,QAAQ;MACX,QAAQ;;wBAEU,WAAW,aAAa,kBAAkB;EAChE,MAAM;;CAEP,CAAC;IAEA,MAAM,MAAM,GACV,MAAM,gBAAgB,mBAAmB;QACzC,uBAAuB,QAAQ,KAAK,IAAI,CAAC,GAAG,EAAE,8BAA8B;QAC5E,oBAAoB,QAAQ,kEAAkE,CAAC;IACjG,OAAO,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/codegen-ts",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"description": "TypeScript codegen engine for MetaObjects — emits Drizzle, Zod, and Fastify artifacts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -111,8 +111,8 @@
|
|
|
111
111
|
"access": "public"
|
|
112
112
|
},
|
|
113
113
|
"dependencies": {
|
|
114
|
-
"@metaobjectsdev/metadata": "0.17.
|
|
115
|
-
"@metaobjectsdev/render": "0.17.
|
|
114
|
+
"@metaobjectsdev/metadata": "0.17.1",
|
|
115
|
+
"@metaobjectsdev/render": "0.17.1",
|
|
116
116
|
"@biomejs/js-api": "^0.7.0",
|
|
117
117
|
"@biomejs/wasm-nodejs": "^1.9.4",
|
|
118
118
|
"ts-poet": "^6.10.0"
|
|
@@ -123,9 +123,9 @@
|
|
|
123
123
|
},
|
|
124
124
|
"devDependencies": {
|
|
125
125
|
"@biomejs/biome": "^1.9.0",
|
|
126
|
-
"@metaobjectsdev/codegen-ts-react": "0.17.
|
|
127
|
-
"@metaobjectsdev/migrate-ts": "0.17.
|
|
128
|
-
"@metaobjectsdev/runtime-ts": "0.17.
|
|
126
|
+
"@metaobjectsdev/codegen-ts-react": "0.17.1",
|
|
127
|
+
"@metaobjectsdev/migrate-ts": "0.17.1",
|
|
128
|
+
"@metaobjectsdev/runtime-ts": "0.17.1",
|
|
129
129
|
"bun-types": "latest",
|
|
130
130
|
"drizzle-orm": "^0.36.0",
|
|
131
131
|
"hono": "^4.6.0",
|
|
@@ -25,7 +25,7 @@ import { type RenderContext } from "../render-context.js";
|
|
|
25
25
|
import { crossEntitySpecifier, entityModuleSpecifier, relativeModuleSpecifier } from "../import-path.js";
|
|
26
26
|
import { GENERATED_HEADER } from "../constants.js";
|
|
27
27
|
import { routesHandlerName } from "../naming.js";
|
|
28
|
-
import { isProjection } from "../projection/projection-detector.js";
|
|
28
|
+
import { isProjection, isWriteThrough } from "../projection/projection-detector.js";
|
|
29
29
|
import type { RelationEntry } from "../relation-resolver.js";
|
|
30
30
|
import { isTphDiscriminatorBase, tphPlan } from "./tph-discriminator.js";
|
|
31
31
|
|
|
@@ -124,6 +124,17 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
124
124
|
// --- Vanilla / write-through entity path: full CRUD routes ---
|
|
125
125
|
const tableVar = ctx.collectionName(entityName);
|
|
126
126
|
|
|
127
|
+
// #214 — a write-through entity (writable table + replica @kind:view + derived
|
|
128
|
+
// origin.passthrough fields) keeps FULL CRUD (writes → table) but its READS must
|
|
129
|
+
// route through the replica view so the HTTP responses carry the derived field.
|
|
130
|
+
// The entity file already exports `<camel>View` as an `.existing()` Drizzle view;
|
|
131
|
+
// import it and pass it as `readView` to mountCrudRoutes. A vanilla entity omits both.
|
|
132
|
+
const writeThrough = isWriteThrough(entity);
|
|
133
|
+
const camelName = entityName.charAt(0).toLowerCase() + entityName.slice(1);
|
|
134
|
+
const viewImportLine = writeThrough ? `\n ${camelName}View,` : "";
|
|
135
|
+
const readViewLinePrefixed = writeThrough ? `\n readView: ${camelName}View,` : "";
|
|
136
|
+
const readViewLineFlat = writeThrough ? `\n readView: ${camelName}View,` : "";
|
|
137
|
+
|
|
127
138
|
const FastifyInstanceSym = imp("t:FastifyInstance@fastify");
|
|
128
139
|
const mountCrudRoutesSym = imp("mountCrudRoutes@@metaobjectsdev/runtime-ts/drizzle-fastify");
|
|
129
140
|
|
|
@@ -144,7 +155,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
144
155
|
import { db } from ${JSON.stringify(dbImportSpec)};
|
|
145
156
|
import {
|
|
146
157
|
${entityName},
|
|
147
|
-
${tableVar}
|
|
158
|
+
${tableVar},${viewImportLine}
|
|
148
159
|
${entityName}InsertSchema,
|
|
149
160
|
${entityName}UpdateSchema,
|
|
150
161
|
${entityName}FilterAllowlist,
|
|
@@ -168,7 +179,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
168
179
|
fastify: instance,
|
|
169
180
|
path: ${entityName}.$path,
|
|
170
181
|
db,
|
|
171
|
-
table: ${tableVar}
|
|
182
|
+
table: ${tableVar},${readViewLinePrefixed}
|
|
172
183
|
insertSchema: ${entityName}InsertSchema,
|
|
173
184
|
updateSchema: ${entityName}UpdateSchema,
|
|
174
185
|
filterAllowlist: ${entityName}FilterAllowlist,
|
|
@@ -192,7 +203,7 @@ export async function ${handlerName}(fastify: ${FastifyInstanceSym}) {
|
|
|
192
203
|
fastify,
|
|
193
204
|
path: ${entityName}.$path,
|
|
194
205
|
db,
|
|
195
|
-
table: ${tableVar}
|
|
206
|
+
table: ${tableVar},${readViewLineFlat}
|
|
196
207
|
insertSchema: ${entityName}InsertSchema,
|
|
197
208
|
updateSchema: ${entityName}UpdateSchema,
|
|
198
209
|
filterAllowlist: ${entityName}FilterAllowlist,
|