prisma-generator-express 1.34.2 → 1.34.4
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.
- package/dist/bin.d.ts +1 -1
- package/dist/bin.js +1 -1
- package/dist/bin.js.map +1 -1
- package/dist/client/encodeQueryParams.js +2 -2
- package/dist/client/encodeQueryParams.js.map +1 -1
- package/dist/generators/generateFastifyHandler.js +4 -4
- package/dist/generators/generateFastifyHandler.js.map +1 -1
- package/dist/generators/generateOperationCore.js +25 -7
- package/dist/generators/generateOperationCore.js.map +1 -1
- package/dist/generators/generateQueryBuilderHelper.js +2 -2
- package/dist/generators/generateRouter.js +7 -7
- package/dist/generators/generateRouter.js.map +1 -1
- package/dist/generators/generateRouterFastify.js +7 -7
- package/dist/generators/generateRouterFastify.js.map +1 -1
- package/dist/generators/generateUnifiedDocs.d.ts +1 -1
- package/dist/generators/generateUnifiedDocs.js +2 -2
- package/dist/generators/generateUnifiedDocs.js.map +1 -1
- package/dist/generators/generateUnifiedHandler.js +4 -4
- package/dist/generators/generateUnifiedHandler.js.map +1 -1
- package/dist/generators/generateUnifiedScalarUI.d.ts +1 -1
- package/dist/generators/generateUnifiedScalarUI.js +2 -2
- package/dist/index.js +30 -30
- package/dist/index.js.map +1 -1
- package/dist/utils/copyFiles.d.ts +1 -1
- package/dist/utils/copyFiles.js +1 -1
- package/dist/utils/copyFiles.js.map +1 -1
- package/package.json +1 -1
- package/src/bin.ts +1 -1
- package/src/client/encodeQueryParams.ts +1 -1
- package/src/copy/docsRenderer.ts +2 -2
- package/src/copy/parseQueryParams.ts +1 -1
- package/src/generators/generateFastifyHandler.ts +3 -3
- package/src/generators/generateOperationCore.ts +25 -7
- package/src/generators/generateQueryBuilderHelper.ts +2 -2
- package/src/generators/generateRouter.ts +6 -6
- package/src/generators/generateRouterFastify.ts +6 -6
- package/src/generators/generateUnifiedDocs.ts +3 -3
- package/src/generators/generateUnifiedHandler.ts +3 -3
- package/src/generators/generateUnifiedScalarUI.ts +3 -3
- package/src/index.ts +12 -12
- package/src/utils/copyFiles.ts +2 -2
package/dist/bin.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import './index
|
|
2
|
+
import './index';
|
package/dist/bin.js
CHANGED
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,mBAAgB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.encodeQueryParams = void 0;
|
|
4
|
-
const
|
|
4
|
+
const misc_1 = require("../copy/misc");
|
|
5
5
|
function replacer(_key, value) {
|
|
6
6
|
if (typeof value === 'bigint') {
|
|
7
7
|
return value.toString();
|
|
@@ -21,7 +21,7 @@ const encodeQueryParams = (params) => {
|
|
|
21
21
|
entries.push(`${encodeURIComponent(key)}=${encodeURIComponent(value.toString())}`);
|
|
22
22
|
continue;
|
|
23
23
|
}
|
|
24
|
-
if (Array.isArray(value) || (0,
|
|
24
|
+
if (Array.isArray(value) || (0, misc_1.isObject)(value)) {
|
|
25
25
|
entries.push(`${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(value, replacer))}`);
|
|
26
26
|
continue;
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeQueryParams.js","sourceRoot":"","sources":["../../src/client/encodeQueryParams.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"encodeQueryParams.js","sourceRoot":"","sources":["../../src/client/encodeQueryParams.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAiBvC,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAA+B,EAAU,EAAE;IAC3E,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QAEjC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC/C,SAAQ;QACV,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CACrE,CAAA;YACD,SAAQ;QACV,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CACV,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CACpF,CAAA;YACD,SAAQ;QACV,CAAC;QAED,OAAO,CAAC,IAAI,CACV,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAClE,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC,CAAA;AA/BY,QAAA,iBAAiB,qBA+B7B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateFastifyHandler = generateFastifyHandler;
|
|
4
|
-
const
|
|
4
|
+
const strings_1 = require("../utils/strings");
|
|
5
5
|
const CORE_NAME_MAP = {
|
|
6
6
|
delete: 'deleteUnique',
|
|
7
7
|
};
|
|
@@ -37,7 +37,7 @@ const CREATED_OPS = new Set([
|
|
|
37
37
|
]);
|
|
38
38
|
function generateFastifyHandler(options) {
|
|
39
39
|
const modelName = options.model.name;
|
|
40
|
-
const prefix = (0,
|
|
40
|
+
const prefix = (0, strings_1.toCamelCase)(modelName);
|
|
41
41
|
const readHandlers = READ_OPS.map((op) => {
|
|
42
42
|
const exportName = `${prefix}${op.charAt(0).toUpperCase() + op.slice(1)}`;
|
|
43
43
|
return `
|
|
@@ -63,8 +63,8 @@ export async function ${exportName}(
|
|
|
63
63
|
}`;
|
|
64
64
|
}).join('\n');
|
|
65
65
|
return `import type { FastifyRequest, FastifyReply } from 'fastify'
|
|
66
|
-
import * as core from './${modelName}Core
|
|
67
|
-
import type { OperationContext } from '../operationRuntime
|
|
66
|
+
import * as core from './${modelName}Core'
|
|
67
|
+
import type { OperationContext } from '../operationRuntime'
|
|
68
68
|
|
|
69
69
|
function buildContext(request: FastifyRequest): OperationContext {
|
|
70
70
|
const req = request as any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFastifyHandler.js","sourceRoot":"","sources":["../../src/generators/generateFastifyHandler.ts"],"names":[],"mappings":";;AAyCA,wDAsDC;AA9FD,
|
|
1
|
+
{"version":3,"file":"generateFastifyHandler.js","sourceRoot":"","sources":["../../src/generators/generateFastifyHandler.ts"],"names":[],"mappings":";;AAyCA,wDAsDC;AA9FD,8CAA8C;AAE9C,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,cAAc;CACvB,CAAA;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,QAAQ,GAAG;IACf,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;IACnB,WAAW;IACX,OAAO;IACP,SAAS;CACV,CAAA;AAED,MAAM,SAAS,GAAG;IAChB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,QAAQ;IACR,YAAY;CACb,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,QAAQ;IACR,YAAY;IACZ,qBAAqB;CACtB,CAAC,CAAA;AAEF,SAAgB,sBAAsB,CAAC,OAEtC;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAA;IAErC,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACvC,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzE,OAAO;wBACa,UAAU;;;;4BAIN,UAAU,CAAC,EAAE,CAAC;;EAExC,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACzC,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACzE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAElD,OAAO;wBACa,UAAU;;;;4BAIN,UAAU,CAAC,EAAE,CAAC;;qCAEL,UAAU;EAC7C,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;2BACkB,SAAS;;;;;;;;;;;;;;;;EAgBlC,YAAY;EACZ,aAAa;CACd,CAAA;AACD,CAAC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateOperationRuntime = generateOperationRuntime;
|
|
4
4
|
exports.generateModelCore = generateModelCore;
|
|
5
5
|
function generateOperationRuntime() {
|
|
6
|
-
return `import { sanitizeKeys } from './misc
|
|
6
|
+
return `import { sanitizeKeys } from './misc'
|
|
7
7
|
|
|
8
8
|
export interface PaginationConfig {
|
|
9
9
|
defaultLimit?: number
|
|
@@ -115,27 +115,45 @@ export function mapError(error: unknown): HttpError {
|
|
|
115
115
|
const code = (error as any).code as string
|
|
116
116
|
const mapped = PRISMA_ERROR_MAP[code]
|
|
117
117
|
if (mapped) {
|
|
118
|
-
|
|
118
|
+
const detail = (error as any).message
|
|
119
|
+
const message = detail
|
|
120
|
+
? mapped.message + ': ' + detail
|
|
121
|
+
: mapped.message
|
|
122
|
+
return new HttpError(mapped.status, message)
|
|
119
123
|
}
|
|
120
124
|
if (typeof code === 'string' && code.startsWith('P')) {
|
|
125
|
+
const msg = (error as any).message || 'Database operation failed'
|
|
121
126
|
console.warn(
|
|
122
127
|
'[prisma-generator-express] Unmapped Prisma error code:',
|
|
123
128
|
code,
|
|
124
|
-
|
|
129
|
+
msg,
|
|
125
130
|
)
|
|
126
|
-
return new HttpError(500,
|
|
131
|
+
return new HttpError(500, msg)
|
|
127
132
|
}
|
|
128
133
|
}
|
|
129
134
|
|
|
130
135
|
if (error && typeof error === 'object' && 'name' in error) {
|
|
131
136
|
const name = (error as any).name
|
|
132
137
|
if (name === 'PrismaClientValidationError') {
|
|
133
|
-
return new HttpError(400, 'Invalid query parameters')
|
|
138
|
+
return new HttpError(400, (error as any).message || 'Invalid query parameters')
|
|
139
|
+
}
|
|
140
|
+
if (name === 'PrismaClientKnownRequestError') {
|
|
141
|
+
return new HttpError(400, (error as any).message || 'Database request error')
|
|
142
|
+
}
|
|
143
|
+
if (name === 'PrismaClientInitializationError') {
|
|
144
|
+
return new HttpError(503, (error as any).message || 'Database connection failed')
|
|
145
|
+
}
|
|
146
|
+
if (name === 'PrismaClientRustPanicError') {
|
|
147
|
+
return new HttpError(500, (error as any).message || 'Internal database engine error')
|
|
148
|
+
}
|
|
149
|
+
if (name === 'PrismaClientUnknownRequestError') {
|
|
150
|
+
return new HttpError(500, (error as any).message || 'Unknown database error')
|
|
134
151
|
}
|
|
135
152
|
}
|
|
136
153
|
|
|
154
|
+
const msg = error instanceof Error ? error.message : String(error)
|
|
137
155
|
console.error('[prisma-generator-express] Unhandled error:', error)
|
|
138
|
-
return new HttpError(500, 'Internal server error')
|
|
156
|
+
return new HttpError(500, msg || 'Internal server error')
|
|
139
157
|
}
|
|
140
158
|
|
|
141
159
|
let _speedExtension: ((opts: any) => any) | null = null
|
|
@@ -445,7 +463,7 @@ ${validationLines}
|
|
|
445
463
|
applyPaginationLimits,
|
|
446
464
|
assertGuard,
|
|
447
465
|
countForPagination,
|
|
448
|
-
} from '../operationRuntime
|
|
466
|
+
} from '../operationRuntime'
|
|
449
467
|
|
|
450
468
|
export async function findMany(ctx: OperationContext): Promise<unknown> {
|
|
451
469
|
const rawQuery = ctx.parsedQuery || {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOperationCore.js","sourceRoot":"","sources":["../../src/generators/generateOperationCore.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"generateOperationCore.js","sourceRoot":"","sources":["../../src/generators/generateOperationCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,14 +28,14 @@ function findCliPath(): string | null {
|
|
|
28
28
|
const req = createRequire(resolve(process.cwd(), 'package.json'))
|
|
29
29
|
const pkgJsonPath = req.resolve('prisma-query-builder-ui/package.json')
|
|
30
30
|
const pkgDir = dirname(pkgJsonPath)
|
|
31
|
-
const cliPath = join(pkgDir, 'bin', 'cli
|
|
31
|
+
const cliPath = join(pkgDir, 'bin', 'cli')
|
|
32
32
|
if (existsSync(cliPath)) return cliPath
|
|
33
33
|
} catch {}
|
|
34
34
|
|
|
35
35
|
let dir = process.cwd()
|
|
36
36
|
const root = resolve(dir, '/')
|
|
37
37
|
while (dir !== root) {
|
|
38
|
-
const candidate = join(dir, 'node_modules', 'prisma-query-builder-ui', 'bin', 'cli
|
|
38
|
+
const candidate = join(dir, 'node_modules', 'prisma-query-builder-ui', 'bin', 'cli')
|
|
39
39
|
if (existsSync(candidate)) return candidate
|
|
40
40
|
dir = dirname(dir)
|
|
41
41
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateRouterFunction = generateRouterFunction;
|
|
4
|
-
const
|
|
4
|
+
const strings_1 = require("../utils/strings");
|
|
5
5
|
function generateRouterFunction({ model, enums, relativeClientPath, }) {
|
|
6
6
|
const modelName = model.name;
|
|
7
|
-
const prefix = (0,
|
|
7
|
+
const prefix = (0, strings_1.toCamelCase)(modelName);
|
|
8
8
|
const modelNameLower = modelName.toLowerCase();
|
|
9
9
|
const routerFunctionName = `${prefix}Router`;
|
|
10
10
|
const fieldsMeta = model.fields.map((f) => ({
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
${prefix}Aggregate,
|
|
47
47
|
${prefix}Count,
|
|
48
48
|
${prefix}GroupBy
|
|
49
|
-
} from './${modelName}Handlers
|
|
50
|
-
import type { RouteConfig } from '../routeConfig.target
|
|
51
|
-
import { parseQueryParams } from '../parseQueryParams
|
|
52
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
53
|
-
import { transformResult } from '../operationRuntime
|
|
49
|
+
} from './${modelName}Handlers'
|
|
50
|
+
import type { RouteConfig } from '../routeConfig.target'
|
|
51
|
+
import { parseQueryParams } from '../parseQueryParams'
|
|
52
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
53
|
+
import { transformResult } from '../operationRuntime'
|
|
54
54
|
|
|
55
55
|
const _env = typeof process !== 'undefined' && process.env ? process.env : {} as Record<string, string | undefined>
|
|
56
56
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRouter.js","sourceRoot":"","sources":["../../src/generators/generateRouter.ts"],"names":[],"mappings":";;AAGA,wDAsUC;AAxUD,
|
|
1
|
+
{"version":3,"file":"generateRouter.js","sourceRoot":"","sources":["../../src/generators/generateRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateFastifyRouterFunction = generateFastifyRouterFunction;
|
|
4
|
-
const
|
|
4
|
+
const strings_1 = require("../utils/strings");
|
|
5
5
|
function generateFastifyRouterFunction({ model, enums, }) {
|
|
6
6
|
const modelName = model.name;
|
|
7
|
-
const prefix = (0,
|
|
7
|
+
const prefix = (0, strings_1.toCamelCase)(modelName);
|
|
8
8
|
const modelNameLower = modelName.toLowerCase();
|
|
9
9
|
const routerFunctionName = `${prefix}Router`;
|
|
10
10
|
const fieldsMeta = model.fields.map((f) => ({
|
|
@@ -45,11 +45,11 @@ import {
|
|
|
45
45
|
${prefix}Aggregate,
|
|
46
46
|
${prefix}Count,
|
|
47
47
|
${prefix}GroupBy,
|
|
48
|
-
} from './${modelName}Handlers
|
|
49
|
-
import type { RouteConfig, FastifyHookHandler } from '../routeConfig.target
|
|
50
|
-
import { parseQueryParams } from '../parseQueryParams
|
|
51
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
52
|
-
import { mapError, transformResult } from '../operationRuntime
|
|
48
|
+
} from './${modelName}Handlers'
|
|
49
|
+
import type { RouteConfig, FastifyHookHandler } from '../routeConfig.target'
|
|
50
|
+
import { parseQueryParams } from '../parseQueryParams'
|
|
51
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
52
|
+
import { mapError, transformResult } from '../operationRuntime'
|
|
53
53
|
|
|
54
54
|
const _env = typeof process !== 'undefined' && process.env ? process.env : {} as Record<string, string | undefined>
|
|
55
55
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":";;AAGA,sEAwgBC;AA1gBD,
|
|
1
|
+
{"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Target } from '../constants
|
|
1
|
+
import { Target } from '../constants';
|
|
2
2
|
export declare function generateUnifiedDocs(models: string[], target?: Target): string;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateUnifiedDocs = generateUnifiedDocs;
|
|
4
4
|
function generateUnifiedDocs(models, target = 'express') {
|
|
5
5
|
const imports = models
|
|
6
|
-
.map((model) => `import { ${model}Docs } from './${model}/${model}Docs
|
|
6
|
+
.map((model) => `import { ${model}Docs } from './${model}/${model}Docs'`)
|
|
7
7
|
.join('\n');
|
|
8
8
|
const handlersEntries = models
|
|
9
9
|
.map((model) => ` ${model}: ${model}Docs`)
|
|
@@ -11,7 +11,7 @@ function generateUnifiedDocs(models, target = 'express') {
|
|
|
11
11
|
const frameworkImport = target === 'fastify'
|
|
12
12
|
? `import type { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'`
|
|
13
13
|
: `import { Request, Response } from 'express'`;
|
|
14
|
-
const routeConfigImport = `import type { RouteConfig } from './routeConfig.target
|
|
14
|
+
const routeConfigImport = `import type { RouteConfig } from './routeConfig.target'`;
|
|
15
15
|
const handlerType = target === 'fastify'
|
|
16
16
|
? `(config: any) => (request: FastifyRequest, reply: FastifyReply) => Promise<void>`
|
|
17
17
|
: `(config: any) => (req: Request, res: Response) => any`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateUnifiedDocs.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedDocs.ts"],"names":[],"mappings":";;AAEA,kDAkLC;AAlLD,SAAgB,mBAAmB,CACjC,MAAgB,EAChB,SAAiB,SAAS;IAE1B,MAAM,OAAO,GAAG,MAAM;SACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,KAAK,kBAAkB,KAAK,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"generateUnifiedDocs.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedDocs.ts"],"names":[],"mappings":";;AAEA,kDAkLC;AAlLD,SAAgB,mBAAmB,CACjC,MAAgB,EAChB,SAAiB,SAAS;IAE1B,MAAM,OAAO,GAAG,MAAM;SACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,KAAK,kBAAkB,KAAK,IAAI,KAAK,OAAO,CAAC;SACxE,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,eAAe,GAAG,MAAM;SAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAA;IAEd,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,8EAA8E;QAChF,CAAC,CAAC,6CAA6C,CAAA;IAEnD,MAAM,iBAAiB,GAAG,yDAAyD,CAAA;IAEnF,MAAM,WAAW,GACf,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,kFAAkF;QACpF,CAAC,CAAC,uDAAuD,CAAA;IAE7D,MAAM,kBAAkB,GACtB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,2BAA2B,EAAE;QAC/B,CAAC,CAAC,2BAA2B,EAAE,CAAA;IAEnC,MAAM,YAAY,GAChB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,2BAA2B,EAAE;QAC/B,CAAC,CAAC,2BAA2B,EAAE,CAAA;IAEnC,OAAO,GAAG,OAAO;EACjB,eAAe;EACf,iBAAiB;;;;qCAIkB,WAAW;EAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqIf,kBAAkB;;EAElB,YAAY;CACb,CAAA;AACD,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;EAWP,CAAA;AACF,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;EAWP,CAAA;AACF,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;EAqBP,CAAA;AACF,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;EAqBP,CAAA;AACF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateUnifiedHandler = generateUnifiedHandler;
|
|
4
|
-
const
|
|
4
|
+
const strings_1 = require("../utils/strings");
|
|
5
5
|
const CORE_NAME_MAP = {
|
|
6
6
|
delete: 'deleteUnique',
|
|
7
7
|
};
|
|
@@ -30,7 +30,7 @@ const ALL_OPS = [
|
|
|
30
30
|
];
|
|
31
31
|
function generateUnifiedHandler(options) {
|
|
32
32
|
const modelName = options.model.name;
|
|
33
|
-
const prefix = (0,
|
|
33
|
+
const prefix = (0, strings_1.toCamelCase)(modelName);
|
|
34
34
|
const handlers = ALL_OPS.map((op) => {
|
|
35
35
|
const exportName = `${prefix}${op.charAt(0).toUpperCase() + op.slice(1)}`;
|
|
36
36
|
return `
|
|
@@ -48,8 +48,8 @@ export async function ${exportName}(
|
|
|
48
48
|
}`;
|
|
49
49
|
}).join('\n');
|
|
50
50
|
return `import { Request, Response, NextFunction } from 'express'
|
|
51
|
-
import * as core from './${modelName}Core
|
|
52
|
-
import { OperationContext, mapError } from '../operationRuntime
|
|
51
|
+
import * as core from './${modelName}Core'
|
|
52
|
+
import { OperationContext, mapError } from '../operationRuntime'
|
|
53
53
|
|
|
54
54
|
function buildContext(req: Request, res: Response): OperationContext {
|
|
55
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAoCA,wDAwCC;AA3ED,
|
|
1
|
+
{"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAoCA,wDAwCC;AA3ED,8CAA8C;AAM9C,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,cAAc;CACvB,CAAA;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,OAAO,GAAG;IACd,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;IACnB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,OAAO;IACP,SAAS;CACV,CAAA;AAED,SAAgB,sBAAsB,CAAC,OAA8B;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAA;IAErC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzE,OAAO;wBACa,UAAU;;;;;;mCAMC,UAAU,CAAC,EAAE,CAAC;;;;;EAK/C,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;2BACkB,SAAS;;;;;;;;;;;;;;;EAelC,QAAQ;CACT,CAAA;AACD,CAAC"}
|
|
@@ -172,7 +172,7 @@ function generateScalarUIHandler(options) {
|
|
|
172
172
|
? generateFastifyDocsExport(modelName)
|
|
173
173
|
: generateExpressDocsExport(modelName);
|
|
174
174
|
return `${frameworkImport}
|
|
175
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
175
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
176
176
|
import {
|
|
177
177
|
renderDocs,
|
|
178
178
|
renderScalar,
|
|
@@ -184,7 +184,7 @@ import {
|
|
|
184
184
|
type DocsUI,
|
|
185
185
|
type DocsConfig,
|
|
186
186
|
type DocsModelContext,
|
|
187
|
-
} from '../docsRenderer
|
|
187
|
+
} from '../docsRenderer'
|
|
188
188
|
|
|
189
189
|
export const MODEL_FIELDS: FieldMeta[] = ${JSON.stringify(fieldsMeta, null, 2)}
|
|
190
190
|
|
package/dist/index.js
CHANGED
|
@@ -5,18 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const generator_helper_1 = require("@prisma/generator-helper");
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
8
|
+
const generateUnifiedHandler_1 = require("./generators/generateUnifiedHandler");
|
|
9
|
+
const generateFastifyHandler_1 = require("./generators/generateFastifyHandler");
|
|
10
|
+
const generateRouter_1 = require("./generators/generateRouter");
|
|
11
|
+
const generateRouterFastify_1 = require("./generators/generateRouterFastify");
|
|
12
|
+
const generateUnifiedScalarUI_1 = require("./generators/generateUnifiedScalarUI");
|
|
13
|
+
const generateUnifiedDocs_1 = require("./generators/generateUnifiedDocs");
|
|
14
|
+
const generateQueryBuilderHelper_1 = require("./generators/generateQueryBuilderHelper");
|
|
15
|
+
const generateOperationCore_1 = require("./generators/generateOperationCore");
|
|
16
|
+
const generateImportPrismaStatement_1 = require("./generators/generateImportPrismaStatement");
|
|
17
|
+
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
18
|
+
const copyFiles_1 = require("./utils/copyFiles");
|
|
19
|
+
const constants_1 = require("./constants");
|
|
20
20
|
function getTarget(options) {
|
|
21
21
|
const raw = String(options.generator.config.target ?? 'express').toLowerCase();
|
|
22
22
|
if (raw === 'express' || raw === 'fastify')
|
|
@@ -28,7 +28,7 @@ function getTarget(options) {
|
|
|
28
28
|
return {
|
|
29
29
|
version: require('../package.json').version,
|
|
30
30
|
defaultOutput: '../generated/express',
|
|
31
|
-
prettyName:
|
|
31
|
+
prettyName: constants_1.GENERATOR_NAME,
|
|
32
32
|
};
|
|
33
33
|
},
|
|
34
34
|
async onGenerate(options) {
|
|
@@ -43,17 +43,17 @@ function getTarget(options) {
|
|
|
43
43
|
console.log(`\n═══ Prisma Generator (${target.toUpperCase()}) ═══`);
|
|
44
44
|
console.log(` Target: ${target}`);
|
|
45
45
|
console.log(` Output: ${options.generator.output?.value}`);
|
|
46
|
-
await (0,
|
|
47
|
-
await (0,
|
|
48
|
-
content: (0,
|
|
46
|
+
await (0, copyFiles_1.copyFiles)(options, target);
|
|
47
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
48
|
+
content: (0, generateOperationCore_1.generateOperationRuntime)(),
|
|
49
49
|
options,
|
|
50
50
|
operation: 'operationRuntime',
|
|
51
51
|
});
|
|
52
52
|
const modelNames = [];
|
|
53
|
-
const generateHandler = target === 'fastify' ?
|
|
53
|
+
const generateHandler = target === 'fastify' ? generateFastifyHandler_1.generateFastifyHandler : generateUnifiedHandler_1.generateUnifiedHandler;
|
|
54
54
|
const generateRouter = target === 'fastify'
|
|
55
|
-
?
|
|
56
|
-
:
|
|
55
|
+
? generateRouterFastify_1.generateFastifyRouterFunction
|
|
56
|
+
: generateRouter_1.generateRouterFunction;
|
|
57
57
|
for (const model of options.dmmf.datamodel.models) {
|
|
58
58
|
if (model.documentation &&
|
|
59
59
|
model.documentation.includes('generator off')) {
|
|
@@ -61,14 +61,14 @@ function getTarget(options) {
|
|
|
61
61
|
continue;
|
|
62
62
|
}
|
|
63
63
|
modelNames.push(model.name);
|
|
64
|
-
const relativeClientPath = (0,
|
|
65
|
-
await (0,
|
|
66
|
-
content: (0,
|
|
64
|
+
const relativeClientPath = (0, generateImportPrismaStatement_1.getRelativeClientPath)(options, model.name);
|
|
65
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
66
|
+
content: (0, generateOperationCore_1.generateModelCore)({ model: model }),
|
|
67
67
|
options,
|
|
68
68
|
model: model,
|
|
69
69
|
operation: 'Core',
|
|
70
70
|
});
|
|
71
|
-
await (0,
|
|
71
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
72
72
|
content: generateHandler({
|
|
73
73
|
model: model,
|
|
74
74
|
}),
|
|
@@ -76,7 +76,7 @@ function getTarget(options) {
|
|
|
76
76
|
model: model,
|
|
77
77
|
operation: 'Handlers',
|
|
78
78
|
});
|
|
79
|
-
await (0,
|
|
79
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
80
80
|
content: generateRouter({
|
|
81
81
|
model: model,
|
|
82
82
|
enums: options.dmmf.datamodel.enums,
|
|
@@ -86,8 +86,8 @@ function getTarget(options) {
|
|
|
86
86
|
model: model,
|
|
87
87
|
operation: 'Router',
|
|
88
88
|
});
|
|
89
|
-
await (0,
|
|
90
|
-
content: (0,
|
|
89
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
90
|
+
content: (0, generateUnifiedScalarUI_1.generateScalarUIHandler)({
|
|
91
91
|
model: model,
|
|
92
92
|
enums: options.dmmf.datamodel.enums,
|
|
93
93
|
target,
|
|
@@ -97,13 +97,13 @@ function getTarget(options) {
|
|
|
97
97
|
operation: 'Docs',
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
|
-
await (0,
|
|
101
|
-
content: (0,
|
|
100
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
101
|
+
content: (0, generateUnifiedDocs_1.generateUnifiedDocs)(modelNames, target),
|
|
102
102
|
options,
|
|
103
103
|
operation: 'combinedDocs',
|
|
104
104
|
});
|
|
105
|
-
await (0,
|
|
106
|
-
content: (0,
|
|
105
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
106
|
+
content: (0, generateQueryBuilderHelper_1.generateQueryBuilderHelper)(options),
|
|
107
107
|
options,
|
|
108
108
|
operation: 'queryBuilder',
|
|
109
109
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,+DAIiC;AACjC,gDAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/copyFiles.js
CHANGED
|
@@ -120,7 +120,7 @@ async function copyFiles(options, target) {
|
|
|
120
120
|
const clientSrcDir = resolveTemplateDir('client');
|
|
121
121
|
const clientErr = copyFileSync(clientSrcDir, clientDir, 'encodeQueryParams.ts', {
|
|
122
122
|
required: true,
|
|
123
|
-
importRewrites: [{ from: '../copy/misc
|
|
123
|
+
importRewrites: [{ from: '../copy/misc', to: '../misc' }],
|
|
124
124
|
});
|
|
125
125
|
if (clientErr)
|
|
126
126
|
errors.push(clientErr);
|
|
@@ -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
package/src/bin.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import './index
|
|
2
|
+
import './index'
|
package/src/copy/docsRenderer.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RouteConfig } from './routeConfig
|
|
2
|
-
import { OPERATION_DEFS, isOperationEnabled } from './operationDefinitions
|
|
1
|
+
import type { RouteConfig } from './routeConfig'
|
|
2
|
+
import { OPERATION_DEFS, isOperationEnabled } from './operationDefinitions'
|
|
3
3
|
|
|
4
4
|
const _env = typeof process !== 'undefined' && process.env ? process.env : {} as Record<string, string | undefined>
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
|
-
import { toCamelCase } from '../utils/strings
|
|
2
|
+
import { toCamelCase } from '../utils/strings'
|
|
3
3
|
|
|
4
4
|
const CORE_NAME_MAP: Record<string, string> = {
|
|
5
5
|
delete: 'deleteUnique',
|
|
@@ -74,8 +74,8 @@ export async function ${exportName}(
|
|
|
74
74
|
}).join('\n')
|
|
75
75
|
|
|
76
76
|
return `import type { FastifyRequest, FastifyReply } from 'fastify'
|
|
77
|
-
import * as core from './${modelName}Core
|
|
78
|
-
import type { OperationContext } from '../operationRuntime
|
|
77
|
+
import * as core from './${modelName}Core'
|
|
78
|
+
import type { OperationContext } from '../operationRuntime'
|
|
79
79
|
|
|
80
80
|
function buildContext(request: FastifyRequest): OperationContext {
|
|
81
81
|
const req = request as any
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
2
|
|
|
3
3
|
export function generateOperationRuntime(): string {
|
|
4
|
-
return `import { sanitizeKeys } from './misc
|
|
4
|
+
return `import { sanitizeKeys } from './misc'
|
|
5
5
|
|
|
6
6
|
export interface PaginationConfig {
|
|
7
7
|
defaultLimit?: number
|
|
@@ -113,27 +113,45 @@ export function mapError(error: unknown): HttpError {
|
|
|
113
113
|
const code = (error as any).code as string
|
|
114
114
|
const mapped = PRISMA_ERROR_MAP[code]
|
|
115
115
|
if (mapped) {
|
|
116
|
-
|
|
116
|
+
const detail = (error as any).message
|
|
117
|
+
const message = detail
|
|
118
|
+
? mapped.message + ': ' + detail
|
|
119
|
+
: mapped.message
|
|
120
|
+
return new HttpError(mapped.status, message)
|
|
117
121
|
}
|
|
118
122
|
if (typeof code === 'string' && code.startsWith('P')) {
|
|
123
|
+
const msg = (error as any).message || 'Database operation failed'
|
|
119
124
|
console.warn(
|
|
120
125
|
'[prisma-generator-express] Unmapped Prisma error code:',
|
|
121
126
|
code,
|
|
122
|
-
|
|
127
|
+
msg,
|
|
123
128
|
)
|
|
124
|
-
return new HttpError(500,
|
|
129
|
+
return new HttpError(500, msg)
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
if (error && typeof error === 'object' && 'name' in error) {
|
|
129
134
|
const name = (error as any).name
|
|
130
135
|
if (name === 'PrismaClientValidationError') {
|
|
131
|
-
return new HttpError(400, 'Invalid query parameters')
|
|
136
|
+
return new HttpError(400, (error as any).message || 'Invalid query parameters')
|
|
137
|
+
}
|
|
138
|
+
if (name === 'PrismaClientKnownRequestError') {
|
|
139
|
+
return new HttpError(400, (error as any).message || 'Database request error')
|
|
140
|
+
}
|
|
141
|
+
if (name === 'PrismaClientInitializationError') {
|
|
142
|
+
return new HttpError(503, (error as any).message || 'Database connection failed')
|
|
143
|
+
}
|
|
144
|
+
if (name === 'PrismaClientRustPanicError') {
|
|
145
|
+
return new HttpError(500, (error as any).message || 'Internal database engine error')
|
|
146
|
+
}
|
|
147
|
+
if (name === 'PrismaClientUnknownRequestError') {
|
|
148
|
+
return new HttpError(500, (error as any).message || 'Unknown database error')
|
|
132
149
|
}
|
|
133
150
|
}
|
|
134
151
|
|
|
152
|
+
const msg = error instanceof Error ? error.message : String(error)
|
|
135
153
|
console.error('[prisma-generator-express] Unhandled error:', error)
|
|
136
|
-
return new HttpError(500, 'Internal server error')
|
|
154
|
+
return new HttpError(500, msg || 'Internal server error')
|
|
137
155
|
}
|
|
138
156
|
|
|
139
157
|
let _speedExtension: ((opts: any) => any) | null = null
|
|
@@ -457,7 +475,7 @@ ${validationLines}
|
|
|
457
475
|
applyPaginationLimits,
|
|
458
476
|
assertGuard,
|
|
459
477
|
countForPagination,
|
|
460
|
-
} from '../operationRuntime
|
|
478
|
+
} from '../operationRuntime'
|
|
461
479
|
|
|
462
480
|
export async function findMany(ctx: OperationContext): Promise<unknown> {
|
|
463
481
|
const rawQuery = ctx.parsedQuery || {}
|
|
@@ -28,14 +28,14 @@ function findCliPath(): string | null {
|
|
|
28
28
|
const req = createRequire(resolve(process.cwd(), 'package.json'))
|
|
29
29
|
const pkgJsonPath = req.resolve('prisma-query-builder-ui/package.json')
|
|
30
30
|
const pkgDir = dirname(pkgJsonPath)
|
|
31
|
-
const cliPath = join(pkgDir, 'bin', 'cli
|
|
31
|
+
const cliPath = join(pkgDir, 'bin', 'cli')
|
|
32
32
|
if (existsSync(cliPath)) return cliPath
|
|
33
33
|
} catch {}
|
|
34
34
|
|
|
35
35
|
let dir = process.cwd()
|
|
36
36
|
const root = resolve(dir, '/')
|
|
37
37
|
while (dir !== root) {
|
|
38
|
-
const candidate = join(dir, 'node_modules', 'prisma-query-builder-ui', 'bin', 'cli
|
|
38
|
+
const candidate = join(dir, 'node_modules', 'prisma-query-builder-ui', 'bin', 'cli')
|
|
39
39
|
if (existsSync(candidate)) return candidate
|
|
40
40
|
dir = dirname(dir)
|
|
41
41
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
|
-
import { toCamelCase } from '../utils/strings
|
|
2
|
+
import { toCamelCase } from '../utils/strings'
|
|
3
3
|
|
|
4
4
|
export function generateRouterFunction({
|
|
5
5
|
model,
|
|
@@ -59,11 +59,11 @@ import {
|
|
|
59
59
|
${prefix}Aggregate,
|
|
60
60
|
${prefix}Count,
|
|
61
61
|
${prefix}GroupBy
|
|
62
|
-
} from './${modelName}Handlers
|
|
63
|
-
import type { RouteConfig } from '../routeConfig.target
|
|
64
|
-
import { parseQueryParams } from '../parseQueryParams
|
|
65
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
66
|
-
import { transformResult } from '../operationRuntime
|
|
62
|
+
} from './${modelName}Handlers'
|
|
63
|
+
import type { RouteConfig } from '../routeConfig.target'
|
|
64
|
+
import { parseQueryParams } from '../parseQueryParams'
|
|
65
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
66
|
+
import { transformResult } from '../operationRuntime'
|
|
67
67
|
|
|
68
68
|
const _env = typeof process !== 'undefined' && process.env ? process.env : {} as Record<string, string | undefined>
|
|
69
69
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
|
-
import { toCamelCase } from '../utils/strings
|
|
2
|
+
import { toCamelCase } from '../utils/strings'
|
|
3
3
|
|
|
4
4
|
export function generateFastifyRouterFunction({
|
|
5
5
|
model,
|
|
@@ -56,11 +56,11 @@ import {
|
|
|
56
56
|
${prefix}Aggregate,
|
|
57
57
|
${prefix}Count,
|
|
58
58
|
${prefix}GroupBy,
|
|
59
|
-
} from './${modelName}Handlers
|
|
60
|
-
import type { RouteConfig, FastifyHookHandler } from '../routeConfig.target
|
|
61
|
-
import { parseQueryParams } from '../parseQueryParams
|
|
62
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
63
|
-
import { mapError, transformResult } from '../operationRuntime
|
|
59
|
+
} from './${modelName}Handlers'
|
|
60
|
+
import type { RouteConfig, FastifyHookHandler } from '../routeConfig.target'
|
|
61
|
+
import { parseQueryParams } from '../parseQueryParams'
|
|
62
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
63
|
+
import { mapError, transformResult } from '../operationRuntime'
|
|
64
64
|
|
|
65
65
|
const _env = typeof process !== 'undefined' && process.env ? process.env : {} as Record<string, string | undefined>
|
|
66
66
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Target } from '../constants
|
|
1
|
+
import { Target } from '../constants'
|
|
2
2
|
|
|
3
3
|
export function generateUnifiedDocs(
|
|
4
4
|
models: string[],
|
|
5
5
|
target: Target = 'express',
|
|
6
6
|
): string {
|
|
7
7
|
const imports = models
|
|
8
|
-
.map((model) => `import { ${model}Docs } from './${model}/${model}Docs
|
|
8
|
+
.map((model) => `import { ${model}Docs } from './${model}/${model}Docs'`)
|
|
9
9
|
.join('\n')
|
|
10
10
|
|
|
11
11
|
const handlersEntries = models
|
|
@@ -17,7 +17,7 @@ export function generateUnifiedDocs(
|
|
|
17
17
|
? `import type { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'`
|
|
18
18
|
: `import { Request, Response } from 'express'`
|
|
19
19
|
|
|
20
|
-
const routeConfigImport = `import type { RouteConfig } from './routeConfig.target
|
|
20
|
+
const routeConfigImport = `import type { RouteConfig } from './routeConfig.target'`
|
|
21
21
|
|
|
22
22
|
const handlerType =
|
|
23
23
|
target === 'fastify'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
|
-
import { toCamelCase } from '../utils/strings
|
|
2
|
+
import { toCamelCase } from '../utils/strings'
|
|
3
3
|
|
|
4
4
|
export interface UnifiedHandlerOptions {
|
|
5
5
|
model: DMMF.Model
|
|
@@ -57,8 +57,8 @@ export async function ${exportName}(
|
|
|
57
57
|
}).join('\n')
|
|
58
58
|
|
|
59
59
|
return `import { Request, Response, NextFunction } from 'express'
|
|
60
|
-
import * as core from './${modelName}Core
|
|
61
|
-
import { OperationContext, mapError } from '../operationRuntime
|
|
60
|
+
import * as core from './${modelName}Core'
|
|
61
|
+
import { OperationContext, mapError } from '../operationRuntime'
|
|
62
62
|
|
|
63
63
|
function buildContext(req: Request, res: Response): OperationContext {
|
|
64
64
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
|
-
import { Target } from '../constants
|
|
2
|
+
import { Target } from '../constants'
|
|
3
3
|
|
|
4
4
|
function exampleValueForType(fieldType: string): unknown {
|
|
5
5
|
switch (fieldType) {
|
|
@@ -200,7 +200,7 @@ export function generateScalarUIHandler(options: {
|
|
|
200
200
|
: generateExpressDocsExport(modelName)
|
|
201
201
|
|
|
202
202
|
return `${frameworkImport}
|
|
203
|
-
import { buildModelOpenApi } from '../buildModelOpenApi
|
|
203
|
+
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
204
204
|
import {
|
|
205
205
|
renderDocs,
|
|
206
206
|
renderScalar,
|
|
@@ -212,7 +212,7 @@ import {
|
|
|
212
212
|
type DocsUI,
|
|
213
213
|
type DocsConfig,
|
|
214
214
|
type DocsModelContext,
|
|
215
|
-
} from '../docsRenderer
|
|
215
|
+
} from '../docsRenderer'
|
|
216
216
|
|
|
217
217
|
export const MODEL_FIELDS: FieldMeta[] = ${JSON.stringify(fieldsMeta, null, 2)}
|
|
218
218
|
|
package/src/index.ts
CHANGED
|
@@ -4,24 +4,24 @@ import {
|
|
|
4
4
|
DMMF,
|
|
5
5
|
} from '@prisma/generator-helper'
|
|
6
6
|
import path from 'path'
|
|
7
|
-
import { generateUnifiedHandler } from './generators/generateUnifiedHandler
|
|
8
|
-
import { generateFastifyHandler } from './generators/generateFastifyHandler
|
|
9
|
-
import { generateRouterFunction } from './generators/generateRouter
|
|
10
|
-
import { generateFastifyRouterFunction } from './generators/generateRouterFastify
|
|
11
|
-
import { generateScalarUIHandler } from './generators/generateUnifiedScalarUI
|
|
12
|
-
import { generateUnifiedDocs } from './generators/generateUnifiedDocs
|
|
13
|
-
import { generateQueryBuilderHelper } from './generators/generateQueryBuilderHelper
|
|
7
|
+
import { generateUnifiedHandler } from './generators/generateUnifiedHandler'
|
|
8
|
+
import { generateFastifyHandler } from './generators/generateFastifyHandler'
|
|
9
|
+
import { generateRouterFunction } from './generators/generateRouter'
|
|
10
|
+
import { generateFastifyRouterFunction } from './generators/generateRouterFastify'
|
|
11
|
+
import { generateScalarUIHandler } from './generators/generateUnifiedScalarUI'
|
|
12
|
+
import { generateUnifiedDocs } from './generators/generateUnifiedDocs'
|
|
13
|
+
import { generateQueryBuilderHelper } from './generators/generateQueryBuilderHelper'
|
|
14
14
|
import {
|
|
15
15
|
generateOperationRuntime,
|
|
16
16
|
generateModelCore,
|
|
17
|
-
} from './generators/generateOperationCore
|
|
17
|
+
} from './generators/generateOperationCore'
|
|
18
18
|
import {
|
|
19
19
|
generateImportPrismaStatement,
|
|
20
20
|
getRelativeClientPath,
|
|
21
|
-
} from './generators/generateImportPrismaStatement
|
|
22
|
-
import { writeFileSafely } from './utils/writeFileSafely
|
|
23
|
-
import { copyFiles } from './utils/copyFiles
|
|
24
|
-
import { GENERATOR_NAME, Target } from './constants
|
|
21
|
+
} from './generators/generateImportPrismaStatement'
|
|
22
|
+
import { writeFileSafely } from './utils/writeFileSafely'
|
|
23
|
+
import { copyFiles } from './utils/copyFiles'
|
|
24
|
+
import { GENERATOR_NAME, Target } from './constants'
|
|
25
25
|
|
|
26
26
|
function getTarget(options: GeneratorOptions): Target {
|
|
27
27
|
const raw = String(
|
package/src/utils/copyFiles.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GeneratorOptions } from '@prisma/generator-helper'
|
|
2
2
|
import * as fs from 'fs'
|
|
3
3
|
import * as path from 'path'
|
|
4
|
-
import { Target } from '../constants
|
|
4
|
+
import { Target } from '../constants'
|
|
5
5
|
|
|
6
6
|
const SHARED_FILES = [
|
|
7
7
|
'parseQueryParams.ts',
|
|
@@ -124,7 +124,7 @@ export async function copyFiles(
|
|
|
124
124
|
'encodeQueryParams.ts',
|
|
125
125
|
{
|
|
126
126
|
required: true,
|
|
127
|
-
importRewrites: [{ from: '../copy/misc
|
|
127
|
+
importRewrites: [{ from: '../copy/misc', to: '../misc' }],
|
|
128
128
|
},
|
|
129
129
|
)
|
|
130
130
|
if (clientErr) errors.push(clientErr)
|