prisma-generator-express 1.10.2 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -26,6 +26,41 @@ const defaultBeforeAfter = {
|
|
|
26
26
|
after: [] as RequestHandler[],
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Parses a query value to convert strings to their respective types.
|
|
31
|
+
* @param {string} value - The query value to parse.
|
|
32
|
+
* @returns {any} The parsed value.
|
|
33
|
+
*/
|
|
34
|
+
const parseQueryValue = (value: string) => {
|
|
35
|
+
if (value === 'true') return true;
|
|
36
|
+
if (value === 'false') return false;
|
|
37
|
+
if (value === 'null') return null;
|
|
38
|
+
if (!isNaN(Number(value))) return Number(value);
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Recursively parses query parameters to convert strings to their respective types.
|
|
44
|
+
* @param {any} params - The query parameters to parse.
|
|
45
|
+
* @returns {any} The parsed query parameters.
|
|
46
|
+
*/
|
|
47
|
+
const parseQueryParams = (params: any) => {
|
|
48
|
+
const parsedParams: any = {};
|
|
49
|
+
for (const key in params) {
|
|
50
|
+
const value = params[key];
|
|
51
|
+
if (typeof value === 'string') {
|
|
52
|
+
parsedParams[key] = parseQueryValue(value);
|
|
53
|
+
} else if (Array.isArray(value)) {
|
|
54
|
+
parsedParams[key] = value.map(parseQueryValue);
|
|
55
|
+
} else if (typeof value === 'object') {
|
|
56
|
+
parsedParams[key] = parseQueryParams(value);
|
|
57
|
+
} else {
|
|
58
|
+
parsedParams[key] = value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return parsedParams;
|
|
62
|
+
};
|
|
63
|
+
|
|
29
64
|
/**
|
|
30
65
|
* Generates an Express router for ${modelName} model.
|
|
31
66
|
* @param config Contains optional middleware to enable routes.
|
|
@@ -34,7 +69,7 @@ const defaultBeforeAfter = {
|
|
|
34
69
|
*/
|
|
35
70
|
export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
36
71
|
const router = express.Router();
|
|
37
|
-
const basePath = config.customUrlPrefix + (config.addModelPrefix ? '/${modelName.toLowerCase()}' : '');
|
|
72
|
+
const basePath = (config.customUrlPrefix || '') + (config.addModelPrefix ? '/${modelName.toLowerCase()}' : '');
|
|
38
73
|
|
|
39
74
|
const setupRoute = (
|
|
40
75
|
path: string,
|
|
@@ -42,7 +77,10 @@ export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
|
42
77
|
middlewares: RequestHandler[],
|
|
43
78
|
handler: RequestHandler
|
|
44
79
|
) => {
|
|
45
|
-
router[method](basePath + path,
|
|
80
|
+
router[method](basePath + path, (req, res, next) => {
|
|
81
|
+
req.query = parseQueryParams(req.query);
|
|
82
|
+
handler(req, res, next);
|
|
83
|
+
}, ...middlewares);
|
|
46
84
|
};
|
|
47
85
|
|
|
48
86
|
if (config.enableAll || config?.findFirst) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRouteFile.js","sourceRoot":"","sources":["../../src/helpers/generateRouteFile.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,EACrC,KAAK,GAGN;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAA;IAE/C,OAAO;;WAEE,SAAS,uBAAuB,SAAS;WACzC,SAAS,sBAAsB,SAAS;WACxC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,uBAAuB,SAAS;WACzC,SAAS,mBAAmB,SAAS;WACrC,SAAS,qBAAqB,SAAS
|
|
1
|
+
{"version":3,"file":"generateRouteFile.js","sourceRoot":"","sources":["../../src/helpers/generateRouteFile.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,EACrC,KAAK,GAGN;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAA;IAE/C,OAAO;;WAEE,SAAS,uBAAuB,SAAS;WACzC,SAAS,sBAAsB,SAAS;WACxC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,uBAAuB,SAAS;WACzC,SAAS,mBAAmB,SAAS;WACrC,SAAS,qBAAqB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA4Cb,SAAS;;;;;kBAK5B,kBAAkB;;iFAE6C,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;0CAgB9D,SAAS;;;;;;;;qCAQd,SAAS;;;;;;;;wCAQN,SAAS;;;;;;;;sCAQX,SAAS;;;;;;;;0CAQL,SAAS;;;;;;;;qCAQd,SAAS;;;;;;;;yCAQL,SAAS;;;;;;;;uCAQX,SAAS;;;;;;;;wCAQR,SAAS;;;;;;;;4CAQL,SAAS;;;;;;;;8CAQP,SAAS;;;;;;;;0CAQb,SAAS;;;;;;;;4CAQP,SAAS;;;;;;;;CAQpD,CAAA;AACD,CAAC;AAlMD,wDAkMC"}
|
package/package.json
CHANGED
|
@@ -30,6 +30,41 @@ const defaultBeforeAfter = {
|
|
|
30
30
|
after: [] as RequestHandler[],
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Parses a query value to convert strings to their respective types.
|
|
35
|
+
* @param {string} value - The query value to parse.
|
|
36
|
+
* @returns {any} The parsed value.
|
|
37
|
+
*/
|
|
38
|
+
const parseQueryValue = (value: string) => {
|
|
39
|
+
if (value === 'true') return true;
|
|
40
|
+
if (value === 'false') return false;
|
|
41
|
+
if (value === 'null') return null;
|
|
42
|
+
if (!isNaN(Number(value))) return Number(value);
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Recursively parses query parameters to convert strings to their respective types.
|
|
48
|
+
* @param {any} params - The query parameters to parse.
|
|
49
|
+
* @returns {any} The parsed query parameters.
|
|
50
|
+
*/
|
|
51
|
+
const parseQueryParams = (params: any) => {
|
|
52
|
+
const parsedParams: any = {};
|
|
53
|
+
for (const key in params) {
|
|
54
|
+
const value = params[key];
|
|
55
|
+
if (typeof value === 'string') {
|
|
56
|
+
parsedParams[key] = parseQueryValue(value);
|
|
57
|
+
} else if (Array.isArray(value)) {
|
|
58
|
+
parsedParams[key] = value.map(parseQueryValue);
|
|
59
|
+
} else if (typeof value === 'object') {
|
|
60
|
+
parsedParams[key] = parseQueryParams(value);
|
|
61
|
+
} else {
|
|
62
|
+
parsedParams[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return parsedParams;
|
|
66
|
+
};
|
|
67
|
+
|
|
33
68
|
/**
|
|
34
69
|
* Generates an Express router for ${modelName} model.
|
|
35
70
|
* @param config Contains optional middleware to enable routes.
|
|
@@ -38,7 +73,7 @@ const defaultBeforeAfter = {
|
|
|
38
73
|
*/
|
|
39
74
|
export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
40
75
|
const router = express.Router();
|
|
41
|
-
const basePath = config.customUrlPrefix + (config.addModelPrefix ? '/${modelName.toLowerCase()}' : '');
|
|
76
|
+
const basePath = (config.customUrlPrefix || '') + (config.addModelPrefix ? '/${modelName.toLowerCase()}' : '');
|
|
42
77
|
|
|
43
78
|
const setupRoute = (
|
|
44
79
|
path: string,
|
|
@@ -46,7 +81,10 @@ export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
|
46
81
|
middlewares: RequestHandler[],
|
|
47
82
|
handler: RequestHandler
|
|
48
83
|
) => {
|
|
49
|
-
router[method](basePath + path,
|
|
84
|
+
router[method](basePath + path, (req, res, next) => {
|
|
85
|
+
req.query = parseQueryParams(req.query);
|
|
86
|
+
handler(req, res, next);
|
|
87
|
+
}, ...middlewares);
|
|
50
88
|
};
|
|
51
89
|
|
|
52
90
|
if (config.enableAll || config?.findFirst) {
|