prisma-generator-express 1.61.0 → 1.62.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.
@@ -55,7 +55,9 @@ const SHARED_FILES = [
55
55
  ];
56
56
  const EXPRESS_ONLY_FILES = [
57
57
  'autoIncludePlanner.ts',
58
+ 'autoIncludePlannerGuarded.ts',
58
59
  'autoIncludeRuntime.ts',
60
+ 'autoIncludeRuntimeGuarded.ts',
59
61
  'materializedRouter.ts',
60
62
  ];
61
63
  function resolveTemplateDir(subpath) {
@@ -1 +1 @@
1
- {"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prisma-generator-express",
3
3
  "description": "Prisma generator for Express, Fastify, and Hono CRUD APIs with OpenAPI documentation",
4
- "version": "1.61.0",
4
+ "version": "1.62.1",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",
@@ -199,6 +199,35 @@ async function runStage(
199
199
  const stageDelegate = getDelegate(extended, targetModel.delegateKey)
200
200
  const g = guarded(stageDelegate, stage.stageShape, caller)
201
201
 
202
+ if (stage.relationPath === 'featureFlags' || stage.relationPath === 'companies') {
203
+ const raw = rel.isList
204
+ ? await stageDelegate.findMany(stageArgs)
205
+ : await stageDelegate.findFirst(stageArgs)
206
+
207
+ const guardedResult = rel.isList
208
+ ? await g.findMany(stageArgs)
209
+ : await g.findFirst(stageArgs)
210
+
211
+ console.dir(
212
+ {
213
+ relationPath: stage.relationPath,
214
+ targetDelegateKey: targetModel.delegateKey,
215
+ parentKey,
216
+ childKey,
217
+ linkVal,
218
+ stageArgs,
219
+ stageShape: stage.stageShape,
220
+ rawCount: Array.isArray(raw) ? raw.length : raw ? 1 : 0,
221
+ guardedCount: Array.isArray(guardedResult) ? guardedResult.length : guardedResult ? 1 : 0,
222
+ raw,
223
+ guardedResult,
224
+ },
225
+ { depth: null },
226
+ )
227
+
228
+ return guardedResult
229
+ }
230
+
202
231
  if (rel.isList) {
203
232
  return g.findMany(stageArgs)
204
233
  }
@@ -24,7 +24,9 @@ const SHARED_FILES = [
24
24
 
25
25
  const EXPRESS_ONLY_FILES = [
26
26
  'autoIncludePlanner.ts',
27
+ 'autoIncludePlannerGuarded.ts',
27
28
  'autoIncludeRuntime.ts',
29
+ 'autoIncludeRuntimeGuarded.ts',
28
30
  'materializedRouter.ts',
29
31
  ]
30
32