arkos 1.2.3-test → 1.2.4-beta

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 (101) hide show
  1. package/cli.js +0 -9
  2. package/dist/cjs/app.js +1 -1
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/utils/index.js +26 -0
  5. package/dist/cjs/exports/utils/index.js.map +1 -1
  6. package/dist/cjs/modules/base/base.controller.js +12 -16
  7. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  8. package/dist/cjs/modules/base/base.router.js.map +1 -1
  9. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +32 -18
  10. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  11. package/dist/cjs/modules/error-handler/error-handler.controller.js +1 -0
  12. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  13. package/dist/cjs/modules/swagger/swagger.router.js +16 -38
  14. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  15. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +250 -0
  16. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  17. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
  18. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  19. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
  20. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  21. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +22 -0
  22. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  23. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +29 -0
  24. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  25. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +439 -0
  26. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  27. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +162 -0
  28. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  29. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +90 -0
  30. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  31. package/dist/cjs/server.js +2 -2
  32. package/dist/cjs/server.js.map +1 -1
  33. package/dist/cjs/types/arkos-config.js.map +1 -1
  34. package/dist/cjs/utils/cli/dev.js +2 -2
  35. package/dist/cjs/utils/cli/dev.js.map +1 -1
  36. package/dist/cjs/utils/features/api.features.js +34 -22
  37. package/dist/cjs/utils/features/api.features.js.map +1 -1
  38. package/dist/cjs/utils/helpers/fs.helpers.js +2 -1
  39. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  40. package/dist/cjs/utils/helpers/models.helpers.js +10 -2
  41. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  42. package/dist/cjs/utils/sheu.js +143 -0
  43. package/dist/cjs/utils/sheu.js.map +1 -0
  44. package/dist/es2020/app.js +1 -1
  45. package/dist/es2020/app.js.map +1 -1
  46. package/dist/es2020/exports/utils/index.js +2 -0
  47. package/dist/es2020/exports/utils/index.js.map +1 -1
  48. package/dist/es2020/modules/base/base.controller.js +12 -16
  49. package/dist/es2020/modules/base/base.controller.js.map +1 -1
  50. package/dist/es2020/modules/base/base.router.js.map +1 -1
  51. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +30 -18
  52. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  53. package/dist/es2020/modules/error-handler/error-handler.controller.js +1 -0
  54. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +1 -1
  55. package/dist/es2020/modules/swagger/swagger.router.js +16 -38
  56. package/dist/es2020/modules/swagger/swagger.router.js.map +1 -1
  57. package/dist/es2020/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +247 -0
  58. package/dist/es2020/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  59. package/dist/es2020/modules/swagger/utils/helpers/get-system-json-schema-paths.js +63 -0
  60. package/dist/es2020/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  61. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +38 -0
  62. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  63. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +19 -0
  64. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  65. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +23 -0
  66. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  67. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +436 -0
  68. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  69. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +159 -0
  70. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  71. package/dist/es2020/modules/swagger/utils/helpers/swagger.router.helpers.js +83 -0
  72. package/dist/es2020/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  73. package/dist/es2020/server.js +2 -2
  74. package/dist/es2020/server.js.map +1 -1
  75. package/dist/es2020/types/arkos-config.js.map +1 -1
  76. package/dist/es2020/utils/cli/dev.js +2 -2
  77. package/dist/es2020/utils/cli/dev.js.map +1 -1
  78. package/dist/es2020/utils/features/api.features.js +33 -22
  79. package/dist/es2020/utils/features/api.features.js.map +1 -1
  80. package/dist/es2020/utils/helpers/fs.helpers.js +2 -1
  81. package/dist/es2020/utils/helpers/fs.helpers.js.map +1 -1
  82. package/dist/es2020/utils/helpers/models.helpers.js +9 -1
  83. package/dist/es2020/utils/helpers/models.helpers.js.map +1 -1
  84. package/dist/es2020/utils/sheu.js +141 -0
  85. package/dist/es2020/utils/sheu.js.map +1 -0
  86. package/dist/types/exports/utils/index.d.ts +2 -0
  87. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  88. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  89. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -0
  90. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  91. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  92. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -0
  93. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  94. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +2 -0
  95. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +2 -0
  96. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  97. package/dist/types/types/arkos-config.d.ts +7 -4
  98. package/dist/types/utils/features/api.features.d.ts +5 -4
  99. package/dist/types/utils/helpers/models.helpers.d.ts +10 -0
  100. package/dist/types/utils/sheu.d.ts +25 -0
  101. package/package.json +7 -3
@@ -0,0 +1,23 @@
1
+ import { getModelModules, getModels, } from "../../../../../utils/helpers/models.helpers";
2
+ import zodToJsonSchema from "zod-to-json-schema";
3
+ import { getCorrectJsonSchemaName } from "../swagger.router.helpers";
4
+ export async function generateZodJsonSchemas() {
5
+ const models = getModels();
6
+ models.forEach((modelName) => {
7
+ const modelModules = getModelModules(modelName);
8
+ const schemas = {};
9
+ if (modelModules?.schemas)
10
+ Object.entries(modelModules.schemas).forEach(([schemaType, zodSchema]) => {
11
+ if (zodSchema)
12
+ try {
13
+ const jsonSchema = zodToJsonSchema(zodSchema);
14
+ const schemaName = getCorrectJsonSchemaName(schemaType, modelName, "Schema");
15
+ schemas[schemaName] = jsonSchema;
16
+ }
17
+ catch (error) {
18
+ console.warn(`Failed to generate schema for ${schemaType} ${modelName}:`, error);
19
+ }
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=generate-zod-json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-zod-json-schema.js","sourceRoot":"","sources":["../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,SAAS,GACV,MAAM,6CAA6C,CAAC;AACrD,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,IAAI,YAAY,EAAE,OAAO;YACvB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAC1C,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;gBAC1B,IAAI,SAAS;oBACX,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC9C,MAAM,UAAU,GAAG,wBAAwB,CACzC,UAAU,EACV,SAAS,EACT,QAAQ,CACT,CAAC;wBAEF,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;oBACnC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CACV,iCAAiC,UAAU,IAAI,SAAS,GAAG,EAC3D,KAAK,CACN,CAAC;oBACJ,CAAC;YACL,CAAC,CACF,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n getModelModules,\n getModels,\n} from \"../../../../../utils/helpers/models.helpers\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { getCorrectJsonSchemaName } from \"../swagger.router.helpers\";\n\nexport async function generateZodJsonSchemas() {\n const models = getModels();\n\n models.forEach((modelName) => {\n const modelModules = getModelModules(modelName);\n const schemas: Record<string, any> = {};\n\n if (modelModules?.schemas)\n Object.entries(modelModules.schemas).forEach(\n ([schemaType, zodSchema]) => {\n if (zodSchema)\n try {\n const jsonSchema = zodToJsonSchema(zodSchema);\n const schemaName = getCorrectJsonSchemaName(\n schemaType,\n modelName,\n \"Schema\"\n );\n\n schemas[schemaName] = jsonSchema;\n } catch (error) {\n console.warn(\n `Failed to generate schema for ${schemaType} ${modelName}:`,\n error\n );\n }\n }\n );\n });\n}\n"]}
@@ -0,0 +1,436 @@
1
+ import { getSchemaRef } from "../../swagger.router.helpers";
2
+ import { plural } from "pluralize";
3
+ import { isEndpointDisabled } from "../../../../../base/utils/helpers/base.router.helpers";
4
+ export async function generatePrismaModelMainRoutesPaths(paths, routeName, pascalModelName, humanReadableName, humanReadableNamePlural, routerConfig, mode) {
5
+ if (!isEndpointDisabled(routerConfig, "createOne")) {
6
+ if (!paths[`/api/${routeName}`])
7
+ paths[`/api/${routeName}`] = {};
8
+ paths[`/api/${routeName}`].post = {
9
+ tags: [humanReadableNamePlural],
10
+ summary: `Create a new ${humanReadableName}`,
11
+ description: `Creates a new ${humanReadableName} record in the system`,
12
+ operationId: `create${pascalModelName}`,
13
+ requestBody: {
14
+ description: `${humanReadableName} data to create`,
15
+ required: true,
16
+ content: {
17
+ "application/json": {
18
+ schema: {
19
+ $ref: getSchemaRef(`Create${pascalModelName}`, mode),
20
+ },
21
+ },
22
+ },
23
+ },
24
+ responses: {
25
+ "201": {
26
+ description: `${humanReadableName} created successfully`,
27
+ content: {
28
+ "application/json": {
29
+ schema: {
30
+ $ref: getSchemaRef(`${pascalModelName}`, mode),
31
+ },
32
+ },
33
+ },
34
+ },
35
+ "400": {
36
+ description: "Invalid input data provided",
37
+ },
38
+ "401": {
39
+ description: "Authentication required",
40
+ },
41
+ "403": {
42
+ description: "Insufficient permissions",
43
+ },
44
+ },
45
+ security: [{ BearerAuth: [] }],
46
+ };
47
+ }
48
+ if (!isEndpointDisabled(routerConfig, "findMany")) {
49
+ if (!paths[`/api/${routeName}`])
50
+ paths[`/api/${routeName}`] = {};
51
+ paths[`/api/${routeName}`].get = {
52
+ tags: [humanReadableNamePlural],
53
+ summary: `Get ${humanReadableNamePlural}`,
54
+ description: `Retrieves a paginated list of ${humanReadableNamePlural} with optional filtering and sorting`,
55
+ operationId: `get${plural(pascalModelName)}`,
56
+ parameters: [
57
+ {
58
+ name: "filter",
59
+ in: "query",
60
+ description: "Filter criteria in JSON format",
61
+ schema: {
62
+ type: "string",
63
+ },
64
+ },
65
+ {
66
+ name: "sort",
67
+ in: "query",
68
+ description: "Sort field (prefix with '-' for descending order)",
69
+ schema: {
70
+ type: "string",
71
+ },
72
+ },
73
+ {
74
+ name: "page",
75
+ in: "query",
76
+ description: "Page number (starts from 1)",
77
+ schema: {
78
+ type: "integer",
79
+ minimum: 1,
80
+ },
81
+ },
82
+ {
83
+ name: "limit",
84
+ in: "query",
85
+ description: "Number of items per page",
86
+ schema: {
87
+ type: "integer",
88
+ minimum: 1,
89
+ maximum: 100,
90
+ },
91
+ },
92
+ {
93
+ name: "fields",
94
+ in: "query",
95
+ description: "Comma-separated list of fields to include in response",
96
+ schema: {
97
+ type: "string",
98
+ },
99
+ },
100
+ ],
101
+ responses: {
102
+ "200": {
103
+ description: `List of ${humanReadableNamePlural} retrieved successfully`,
104
+ content: {
105
+ "application/json": {
106
+ schema: {
107
+ type: "object",
108
+ properties: {
109
+ total: {
110
+ type: "integer",
111
+ description: "Total number of records matching the criteria",
112
+ },
113
+ results: {
114
+ type: "integer",
115
+ description: "Number of records returned in current page",
116
+ },
117
+ data: {
118
+ type: "array",
119
+ items: {
120
+ $ref: getSchemaRef(`FindMany${pascalModelName}`, mode),
121
+ },
122
+ },
123
+ },
124
+ },
125
+ },
126
+ },
127
+ },
128
+ "401": {
129
+ description: "Authentication required",
130
+ },
131
+ "403": {
132
+ description: "Insufficient permissions",
133
+ },
134
+ },
135
+ security: [{ BearerAuth: [] }],
136
+ };
137
+ }
138
+ if (!isEndpointDisabled(routerConfig, "createMany")) {
139
+ paths[`/api/${routeName}/many`] = {
140
+ post: {
141
+ tags: [humanReadableNamePlural],
142
+ summary: `Create multiple ${humanReadableNamePlural}`,
143
+ description: `Creates multiple ${humanReadableNamePlural} records in a single batch operation`,
144
+ operationId: `createMany${pascalModelName}`,
145
+ requestBody: {
146
+ description: `Array of ${humanReadableName} data to create`,
147
+ required: true,
148
+ content: {
149
+ "application/json": {
150
+ schema: {
151
+ type: "array",
152
+ items: {
153
+ $ref: getSchemaRef(`Create${pascalModelName}`, mode),
154
+ },
155
+ },
156
+ },
157
+ },
158
+ },
159
+ responses: {
160
+ "201": {
161
+ description: `${humanReadableNamePlural} created successfully`,
162
+ content: {
163
+ "application/json": {
164
+ schema: {
165
+ type: "object",
166
+ properties: {
167
+ count: {
168
+ type: "integer",
169
+ description: "Number of records created",
170
+ },
171
+ },
172
+ },
173
+ },
174
+ },
175
+ },
176
+ "400": {
177
+ description: "Invalid input data provided",
178
+ },
179
+ "401": {
180
+ description: "Authentication required",
181
+ },
182
+ "403": {
183
+ description: "Insufficient permissions",
184
+ },
185
+ },
186
+ security: [{ BearerAuth: [] }],
187
+ },
188
+ };
189
+ }
190
+ if (!isEndpointDisabled(routerConfig, "updateMany")) {
191
+ if (!paths[`/api/${routeName}/many`])
192
+ paths[`/api/${routeName}/many`] = {};
193
+ paths[`/api/${routeName}/many`].patch = {
194
+ tags: [humanReadableNamePlural],
195
+ summary: `Update multiple ${humanReadableNamePlural}`,
196
+ description: `Updates multiple ${humanReadableNamePlural} records that match the specified filter criteria`,
197
+ operationId: `updateMany${pascalModelName}`,
198
+ parameters: [
199
+ {
200
+ name: "filter",
201
+ in: "query",
202
+ description: "Filter criteria in JSON format (required)",
203
+ required: true,
204
+ schema: {
205
+ type: "string",
206
+ },
207
+ },
208
+ ],
209
+ requestBody: {
210
+ description: `Partial ${humanReadableName} data to update`,
211
+ required: true,
212
+ content: {
213
+ "application/json": {
214
+ schema: {
215
+ $ref: getSchemaRef(`Update${pascalModelName}`, mode),
216
+ },
217
+ },
218
+ },
219
+ },
220
+ responses: {
221
+ "200": {
222
+ description: `${humanReadableNamePlural} updated successfully`,
223
+ content: {
224
+ "application/json": {
225
+ schema: {
226
+ type: "object",
227
+ properties: {
228
+ count: {
229
+ type: "integer",
230
+ description: "Number of records updated",
231
+ },
232
+ },
233
+ },
234
+ },
235
+ },
236
+ },
237
+ "400": {
238
+ description: "Invalid input data or missing filter criteria",
239
+ },
240
+ "401": {
241
+ description: "Authentication required",
242
+ },
243
+ "403": {
244
+ description: "Insufficient permissions",
245
+ },
246
+ },
247
+ security: [{ BearerAuth: [] }],
248
+ };
249
+ }
250
+ if (!isEndpointDisabled(routerConfig, "deleteMany")) {
251
+ if (!paths[`/api/${routeName}/many`])
252
+ paths[`/api/${routeName}/many`] = {};
253
+ paths[`/api/${routeName}/many`].delete = {
254
+ tags: [humanReadableNamePlural],
255
+ summary: `Delete multiple ${humanReadableNamePlural}`,
256
+ description: `Deletes multiple ${humanReadableNamePlural} records that match the specified filter criteria`,
257
+ operationId: `deleteMany${pascalModelName}`,
258
+ parameters: [
259
+ {
260
+ name: "filter",
261
+ in: "query",
262
+ description: "Filter criteria in JSON format (required)",
263
+ required: true,
264
+ schema: {
265
+ type: "string",
266
+ },
267
+ },
268
+ ],
269
+ responses: {
270
+ "200": {
271
+ description: `${humanReadableNamePlural} deleted successfully`,
272
+ content: {
273
+ "application/json": {
274
+ schema: {
275
+ type: "object",
276
+ properties: {
277
+ count: {
278
+ type: "integer",
279
+ description: "Number of records deleted",
280
+ },
281
+ },
282
+ },
283
+ },
284
+ },
285
+ },
286
+ "400": {
287
+ description: "Missing filter criteria",
288
+ },
289
+ "401": {
290
+ description: "Authentication required",
291
+ },
292
+ "403": {
293
+ description: "Insufficient permissions",
294
+ },
295
+ },
296
+ security: [{ BearerAuth: [] }],
297
+ };
298
+ }
299
+ if (!isEndpointDisabled(routerConfig, "findOne")) {
300
+ paths[`/api/${routeName}/{id}`] = {
301
+ get: {
302
+ tags: [humanReadableNamePlural],
303
+ summary: `Get ${humanReadableName} by ID`,
304
+ description: `Retrieves a single ${humanReadableName} record by its unique identifier`,
305
+ operationId: `get${pascalModelName}ById`,
306
+ parameters: [
307
+ {
308
+ name: "id",
309
+ in: "path",
310
+ description: `Unique identifier of the ${humanReadableName}`,
311
+ required: true,
312
+ schema: {
313
+ type: "string",
314
+ },
315
+ },
316
+ ],
317
+ responses: {
318
+ "200": {
319
+ description: `${humanReadableName} retrieved successfully`,
320
+ content: {
321
+ "application/json": {
322
+ schema: {
323
+ $ref: getSchemaRef(`FindOne${pascalModelName}`, mode),
324
+ },
325
+ },
326
+ },
327
+ },
328
+ "401": {
329
+ description: "Authentication required",
330
+ },
331
+ "403": {
332
+ description: "Insufficient permissions",
333
+ },
334
+ "404": {
335
+ description: `${humanReadableName} not found`,
336
+ },
337
+ },
338
+ security: [{ BearerAuth: [] }],
339
+ },
340
+ };
341
+ }
342
+ if (!isEndpointDisabled(routerConfig, "updateOne")) {
343
+ if (!paths[`/api/${routeName}/{id}`])
344
+ paths[`/api/${routeName}/{id}`] = {};
345
+ paths[`/api/${routeName}/{id}`].patch = {
346
+ tags: [humanReadableNamePlural],
347
+ summary: `Update ${humanReadableName} by ID`,
348
+ description: `Updates a single ${humanReadableName} record by its unique identifier`,
349
+ operationId: `update${pascalModelName}`,
350
+ parameters: [
351
+ {
352
+ name: "id",
353
+ in: "path",
354
+ description: `Unique identifier of the ${humanReadableName}`,
355
+ required: true,
356
+ schema: {
357
+ type: "string",
358
+ },
359
+ },
360
+ ],
361
+ requestBody: {
362
+ description: `Partial ${humanReadableName} data to update`,
363
+ required: true,
364
+ content: {
365
+ "application/json": {
366
+ schema: {
367
+ $ref: getSchemaRef(`Update${pascalModelName}`, mode),
368
+ },
369
+ },
370
+ },
371
+ },
372
+ responses: {
373
+ "200": {
374
+ description: `${humanReadableName} updated successfully`,
375
+ content: {
376
+ "application/json": {
377
+ schema: {
378
+ $ref: getSchemaRef(`${pascalModelName}`, mode),
379
+ },
380
+ },
381
+ },
382
+ },
383
+ "400": {
384
+ description: "Invalid input data provided",
385
+ },
386
+ "401": {
387
+ description: "Authentication required",
388
+ },
389
+ "403": {
390
+ description: "Insufficient permissions",
391
+ },
392
+ "404": {
393
+ description: `${humanReadableName} not found`,
394
+ },
395
+ },
396
+ security: [{ BearerAuth: [] }],
397
+ };
398
+ }
399
+ if (!isEndpointDisabled(routerConfig, "deleteOne")) {
400
+ if (!paths[`/api/${routeName}/{id}`])
401
+ paths[`/api/${routeName}/{id}`] = {};
402
+ paths[`/api/${routeName}/{id}`].delete = {
403
+ tags: [humanReadableNamePlural],
404
+ summary: `Delete ${humanReadableName} by ID`,
405
+ description: `Permanently deletes a single ${humanReadableName} record by its unique identifier`,
406
+ operationId: `delete${pascalModelName}`,
407
+ parameters: [
408
+ {
409
+ name: "id",
410
+ in: "path",
411
+ description: `Unique identifier of the ${humanReadableName}`,
412
+ required: true,
413
+ schema: {
414
+ type: "string",
415
+ },
416
+ },
417
+ ],
418
+ responses: {
419
+ "204": {
420
+ description: `${humanReadableName} deleted successfully`,
421
+ },
422
+ "401": {
423
+ description: "Authentication required",
424
+ },
425
+ "403": {
426
+ description: "Insufficient permissions",
427
+ },
428
+ "404": {
429
+ description: `${humanReadableName} not found`,
430
+ },
431
+ },
432
+ security: [{ BearerAuth: [] }],
433
+ };
434
+ }
435
+ }
436
+ //# sourceMappingURL=generate-prisma-model-main-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prisma-model-main-routes.js","sourceRoot":"","sources":["../../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,KAA4B,EAC5B,SAAiB,EACjB,eAAuB,EACvB,iBAAyB,EACzB,uBAA+B,EAC/B,YAAiB,EACjB,IAAY;IAGZ,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;QACjE,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAE,CAAC,IAAI,GAAG;YACjC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,gBAAgB,iBAAiB,EAAE;YAC5C,WAAW,EAAE,iBAAiB,iBAAiB,uBAAuB;YACtE,WAAW,EAAE,SAAS,eAAe,EAAE;YACvC,WAAW,EAAE;gBACX,WAAW,EAAE,GAAG,iBAAiB,iBAAiB;gBAClD,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE;oBACP,kBAAkB,EAAE;wBAClB,MAAM,EAAE;4BACN,IAAI,EAAE,YAAY,CAAC,SAAS,eAAe,EAAE,EAAE,IAAI,CAAC;yBACrD;qBACF;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,iBAAiB,uBAAuB;oBACxD,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,YAAY,CAAC,GAAG,eAAe,EAAE,EAAE,IAAI,CAAC;6BAC/C;yBACF;qBACF;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;QACjE,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAE,CAAC,GAAG,GAAG;YAChC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,OAAO,uBAAuB,EAAE;YACzC,WAAW,EAAE,iCAAiC,uBAAuB,sCAAsC;YAC3G,WAAW,EAAE,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE;YAC5C,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,gCAAgC;oBAC7C,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,mDAAmD;oBAChE,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,6BAA6B;oBAC1C,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,CAAC;qBACX;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,0BAA0B;oBACvC,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,CAAC;wBACV,OAAO,EAAE,GAAG;qBACb;iBACF;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,uDAAuD;oBACpE,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,WAAW,uBAAuB,yBAAyB;oBACxE,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,KAAK,EAAE;wCACL,IAAI,EAAE,SAAS;wCACf,WAAW,EACT,+CAA+C;qCAClD;oCACD,OAAO,EAAE;wCACP,IAAI,EAAE,SAAS;wCACf,WAAW,EAAE,4CAA4C;qCAC1D;oCACD,IAAI,EAAE;wCACJ,IAAI,EAAE,OAAO;wCACb,KAAK,EAAE;4CACL,IAAI,EAAE,YAAY,CAAC,WAAW,eAAe,EAAE,EAAE,IAAI,CAAC;yCACvD;qCACF;iCACF;6BACF;yBACF;qBACF;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG;YAChC,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC,uBAAuB,CAAC;gBAC/B,OAAO,EAAE,mBAAmB,uBAAuB,EAAE;gBACrD,WAAW,EAAE,oBAAoB,uBAAuB,sCAAsC;gBAC9F,WAAW,EAAE,aAAa,eAAe,EAAE;gBAC3C,WAAW,EAAE;oBACX,WAAW,EAAE,YAAY,iBAAiB,iBAAiB;oBAC3D,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,YAAY,CAAC,SAAS,eAAe,EAAE,EAAE,IAAI,CAAC;iCACrD;6BACF;yBACF;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,WAAW,EAAE,GAAG,uBAAuB,uBAAuB;wBAC9D,OAAO,EAAE;4BACP,kBAAkB,EAAE;gCAClB,MAAM,EAAE;oCACN,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,KAAK,EAAE;4CACL,IAAI,EAAE,SAAS;4CACf,WAAW,EAAE,2BAA2B;yCACzC;qCACF;iCACF;6BACF;yBACF;qBACF;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,6BAA6B;qBAC3C;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,yBAAyB;qBACvC;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,0BAA0B;qBACxC;iBACF;gBACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3E,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAE,CAAC,KAAK,GAAG;YACvC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,mBAAmB,uBAAuB,EAAE;YACrD,WAAW,EAAE,oBAAoB,uBAAuB,mDAAmD;YAC3G,WAAW,EAAE,aAAa,eAAe,EAAE;YAC3C,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,2CAA2C;oBACxD,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,WAAW,EAAE;gBACX,WAAW,EAAE,WAAW,iBAAiB,iBAAiB;gBAC1D,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE;oBACP,kBAAkB,EAAE;wBAClB,MAAM,EAAE;4BACN,IAAI,EAAE,YAAY,CAAC,SAAS,eAAe,EAAE,EAAE,IAAI,CAAC;yBACrD;qBACF;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,uBAAuB,uBAAuB;oBAC9D,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,KAAK,EAAE;wCACL,IAAI,EAAE,SAAS;wCACf,WAAW,EAAE,2BAA2B;qCACzC;iCACF;6BACF;yBACF;qBACF;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,+CAA+C;iBAC7D;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3E,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAE,CAAC,MAAM,GAAG;YACxC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,mBAAmB,uBAAuB,EAAE;YACrD,WAAW,EAAE,oBAAoB,uBAAuB,mDAAmD;YAC3G,WAAW,EAAE,aAAa,eAAe,EAAE;YAC3C,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,OAAO;oBACX,WAAW,EAAE,2CAA2C;oBACxD,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,uBAAuB,uBAAuB;oBAC9D,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,KAAK,EAAE;wCACL,IAAI,EAAE,SAAS;wCACf,WAAW,EAAE,2BAA2B;qCACzC;iCACF;6BACF;yBACF;qBACF;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG;YAChC,GAAG,EAAE;gBACH,IAAI,EAAE,CAAC,uBAAuB,CAAC;gBAC/B,OAAO,EAAE,OAAO,iBAAiB,QAAQ;gBACzC,WAAW,EAAE,sBAAsB,iBAAiB,kCAAkC;gBACtF,WAAW,EAAE,MAAM,eAAe,MAAM;gBACxC,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,IAAI;wBACV,EAAE,EAAE,MAAM;wBACV,WAAW,EAAE,4BAA4B,iBAAiB,EAAE;wBAC5D,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,WAAW,EAAE,GAAG,iBAAiB,yBAAyB;wBAC1D,OAAO,EAAE;4BACP,kBAAkB,EAAE;gCAClB,MAAM,EAAE;oCACN,IAAI,EAAE,YAAY,CAAC,UAAU,eAAe,EAAE,EAAE,IAAI,CAAC;iCACtD;6BACF;yBACF;qBACF;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,yBAAyB;qBACvC;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,0BAA0B;qBACxC;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,GAAG,iBAAiB,YAAY;qBAC9C;iBACF;gBACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3E,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAE,CAAC,KAAK,GAAG;YACvC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,UAAU,iBAAiB,QAAQ;YAC5C,WAAW,EAAE,oBAAoB,iBAAiB,kCAAkC;YACpF,WAAW,EAAE,SAAS,eAAe,EAAE;YACvC,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,MAAM;oBACV,WAAW,EAAE,4BAA4B,iBAAiB,EAAE;oBAC5D,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,WAAW,EAAE;gBACX,WAAW,EAAE,WAAW,iBAAiB,iBAAiB;gBAC1D,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE;oBACP,kBAAkB,EAAE;wBAClB,MAAM,EAAE;4BACN,IAAI,EAAE,YAAY,CAAC,SAAS,eAAe,EAAE,EAAE,IAAI,CAAC;yBACrD;qBACF;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,iBAAiB,uBAAuB;oBACxD,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,YAAY,CAAC,GAAG,eAAe,EAAE,EAAE,IAAI,CAAC;6BAC/C;yBACF;qBACF;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,iBAAiB,YAAY;iBAC9C;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC;YAAE,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3E,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAE,CAAC,MAAM,GAAG;YACxC,IAAI,EAAE,CAAC,uBAAuB,CAAC;YAC/B,OAAO,EAAE,UAAU,iBAAiB,QAAQ;YAC5C,WAAW,EAAE,gCAAgC,iBAAiB,kCAAkC;YAChG,WAAW,EAAE,SAAS,eAAe,EAAE;YACvC,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,MAAM;oBACV,WAAW,EAAE,4BAA4B,iBAAiB,EAAE;oBAC5D,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,iBAAiB,uBAAuB;iBACzD;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,yBAAyB;iBACvC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,0BAA0B;iBACxC;gBACD,KAAK,EAAE;oBACL,WAAW,EAAE,GAAG,iBAAiB,YAAY;iBAC9C;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { getSchemaRef } from \"../../swagger.router.helpers\";\nimport { plural } from \"pluralize\";\nimport { isEndpointDisabled } from \"../../../../../base/utils/helpers/base.router.helpers\";\n\nexport async function generatePrismaModelMainRoutesPaths(\n paths: OpenAPIV3.PathsObject,\n routeName: string,\n pascalModelName: string,\n humanReadableName: string,\n humanReadableNamePlural: string,\n routerConfig: any,\n mode: string\n) {\n // Create One\n if (!isEndpointDisabled(routerConfig, \"createOne\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n paths[`/api/${routeName}`]!.post = {\n tags: [humanReadableNamePlural],\n summary: `Create a new ${humanReadableName}`,\n description: `Creates a new ${humanReadableName} record in the system`,\n operationId: `create${pascalModelName}`,\n requestBody: {\n description: `${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Create${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableName} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find Many\n if (!isEndpointDisabled(routerConfig, \"findMany\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n paths[`/api/${routeName}`]!.get = {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableNamePlural}`,\n description: `Retrieves a paginated list of ${humanReadableNamePlural} with optional filtering and sorting`,\n operationId: `get${plural(pascalModelName)}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"sort\",\n in: \"query\",\n description: \"Sort field (prefix with '-' for descending order)\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"page\",\n in: \"query\",\n description: \"Page number (starts from 1)\",\n schema: {\n type: \"integer\",\n minimum: 1,\n },\n },\n {\n name: \"limit\",\n in: \"query\",\n description: \"Number of items per page\",\n schema: {\n type: \"integer\",\n minimum: 1,\n maximum: 100,\n },\n },\n {\n name: \"fields\",\n in: \"query\",\n description: \"Comma-separated list of fields to include in response\",\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `List of ${humanReadableNamePlural} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n total: {\n type: \"integer\",\n description:\n \"Total number of records matching the criteria\",\n },\n results: {\n type: \"integer\",\n description: \"Number of records returned in current page\",\n },\n data: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(`FindMany${pascalModelName}`, mode),\n },\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Create Many\n if (!isEndpointDisabled(routerConfig, \"createMany\")) {\n paths[`/api/${routeName}/many`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create multiple ${humanReadableNamePlural}`,\n description: `Creates multiple ${humanReadableNamePlural} records in a single batch operation`,\n operationId: `createMany${pascalModelName}`,\n requestBody: {\n description: `Array of ${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(`Create${pascalModelName}`, mode),\n },\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableNamePlural} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records created\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update Many\n if (!isEndpointDisabled(routerConfig, \"updateMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n paths[`/api/${routeName}/many`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update multiple ${humanReadableNamePlural}`,\n description: `Updates multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `updateMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records updated\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data or missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete Many\n if (!isEndpointDisabled(routerConfig, \"deleteMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n paths[`/api/${routeName}/many`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete multiple ${humanReadableNamePlural}`,\n description: `Deletes multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `deleteMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} deleted successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records deleted\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find One\n if (!isEndpointDisabled(routerConfig, \"findOne\")) {\n paths[`/api/${routeName}/{id}`] = {\n get: {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableName} by ID`,\n description: `Retrieves a single ${humanReadableName} record by its unique identifier`,\n operationId: `get${pascalModelName}ById`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableName} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`FindOne${pascalModelName}`, mode),\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update One\n if (!isEndpointDisabled(routerConfig, \"updateOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n paths[`/api/${routeName}/{id}`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update ${humanReadableName} by ID`,\n description: `Updates a single ${humanReadableName} record by its unique identifier`,\n operationId: `update${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableName} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete One\n if (!isEndpointDisabled(routerConfig, \"deleteOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n paths[`/api/${routeName}/{id}`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete ${humanReadableName} by ID`,\n description: `Permanently deletes a single ${humanReadableName} record by its unique identifier`,\n operationId: `delete${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"204\": {\n description: `${humanReadableName} deleted successfully`,\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n}\n"]}