arkos 1.3.1-beta → 1.3.2-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.
- package/dist/cjs/app.js +139 -1
- package/dist/cjs/exports/auth/index.js +6 -1
- package/dist/cjs/exports/controllers/index.js +11 -1
- package/dist/cjs/exports/error-handler/index.js +11 -1
- package/dist/cjs/exports/index.js +12 -1
- package/dist/cjs/exports/middlewares/index.js +7 -1
- package/dist/cjs/exports/prisma/index.js +13 -1
- package/dist/cjs/exports/services/index.js +48 -1
- package/dist/cjs/exports/utils/index.js +44 -1
- package/dist/cjs/exports/validation/index.js +11 -1
- package/dist/cjs/modules/auth/auth.controller.js +229 -1
- package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
- package/dist/cjs/modules/auth/auth.router.js +82 -1
- package/dist/cjs/modules/auth/auth.router.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +226 -1
- package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/cjs/modules/base/base.controller.js +172 -1
- package/dist/cjs/modules/base/base.middlewares.js +92 -1
- package/dist/cjs/modules/base/base.router.js +22 -1
- package/dist/cjs/modules/base/base.service.js +507 -1
- package/dist/cjs/modules/base/base.service.js.map +1 -1
- package/dist/cjs/modules/base/types/base.service.types.js +3 -1
- package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +104 -1
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
- package/dist/cjs/modules/base/utils/router-validator.js +16 -1
- package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
- package/dist/cjs/modules/email/email.service.js +104 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
- package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
- package/dist/cjs/modules/file-upload/file-upload.controller.js +233 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
- package/dist/cjs/modules/swagger/swagger.router.js +38 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +48 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
- package/dist/cjs/paths.js +9 -1
- package/dist/cjs/server.js +94 -5
- package/dist/cjs/types/arkos-config.js +3 -1
- package/dist/cjs/types/arkos-config.js.map +1 -1
- package/dist/cjs/types/auth.js +3 -1
- package/dist/cjs/types/index.js +11 -1
- package/dist/cjs/types/router-config.js +3 -1
- package/dist/cjs/utils/arkos-env.js +9 -1
- package/dist/cjs/utils/cli/build.js +214 -5
- package/dist/cjs/utils/cli/dev.js +154 -3
- package/dist/cjs/utils/cli/generate.js +109 -1
- package/dist/cjs/utils/cli/index.js +104 -1
- package/dist/cjs/utils/cli/index.js.map +1 -1
- package/dist/cjs/utils/cli/prisma-generate.js +120 -0
- package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
- package/dist/cjs/utils/cli/start.js +103 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
- package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +36 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +21 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +288 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +45 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
- package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
- package/dist/cjs/utils/dotenv.helpers.js +43 -1
- package/dist/cjs/utils/dynamic-loader.js +270 -9
- package/dist/cjs/utils/features/api.features.js +169 -1
- package/dist/cjs/utils/features/change-case.features.js +67 -1
- package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
- package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
- package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
- package/dist/cjs/utils/helpers/global.helpers.js +94 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +40 -1
- package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
- package/dist/cjs/utils/helpers/text.helpers.js +28 -1
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
- package/dist/cjs/utils/prisma/types.js +3 -1
- package/dist/cjs/utils/sheu.js +120 -1
- package/dist/cjs/utils/validate-dto.js +17 -1
- package/dist/cjs/utils/validate-schema.js +15 -1
- package/dist/esm/app.js +132 -1
- package/dist/esm/exports/auth/index.js +2 -1
- package/dist/esm/exports/controllers/index.js +4 -1
- package/dist/esm/exports/error-handler/index.js +4 -1
- package/dist/esm/exports/index.js +8 -1
- package/dist/esm/exports/middlewares/index.js +2 -1
- package/dist/esm/exports/prisma/index.js +6 -1
- package/dist/esm/exports/services/index.js +9 -1
- package/dist/esm/exports/utils/index.js +4 -1
- package/dist/esm/exports/validation/index.js +4 -1
- package/dist/esm/modules/auth/auth.controller.js +222 -1
- package/dist/esm/modules/auth/auth.controller.js.map +1 -1
- package/dist/esm/modules/auth/auth.router.js +76 -1
- package/dist/esm/modules/auth/auth.router.js.map +1 -1
- package/dist/esm/modules/auth/auth.service.js +219 -1
- package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/esm/modules/base/base.controller.js +165 -1
- package/dist/esm/modules/base/base.middlewares.js +81 -1
- package/dist/esm/modules/base/base.router.js +15 -1
- package/dist/esm/modules/base/base.service.js +500 -1
- package/dist/esm/modules/base/base.service.js.map +1 -1
- package/dist/esm/modules/base/types/base.service.types.js +2 -1
- package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +96 -1
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
- package/dist/esm/modules/base/utils/router-validator.js +14 -1
- package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
- package/dist/esm/modules/email/email.service.js +97 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
- package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
- package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
- package/dist/esm/modules/file-upload/file-upload.controller.js +228 -1
- package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
- package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
- package/dist/esm/modules/swagger/swagger.router.js +32 -1
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
- package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +42 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
- package/dist/esm/paths.js +3 -1
- package/dist/esm/server.js +85 -5
- package/dist/esm/types/arkos-config.js +2 -1
- package/dist/esm/types/arkos-config.js.map +1 -1
- package/dist/esm/types/auth.js +2 -1
- package/dist/esm/types/index.js +8 -1
- package/dist/esm/types/router-config.js +2 -1
- package/dist/esm/utils/arkos-env.js +7 -1
- package/dist/esm/utils/cli/build.js +208 -5
- package/dist/esm/utils/cli/dev.js +147 -3
- package/dist/esm/utils/cli/generate.js +103 -1
- package/dist/esm/utils/cli/index.js +94 -1
- package/dist/esm/utils/cli/index.js.map +1 -1
- package/dist/esm/utils/cli/prisma-generate.js +114 -0
- package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
- package/dist/esm/utils/cli/start.js +96 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
- package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +33 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +18 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +285 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generators.js +28 -2
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
- package/dist/esm/utils/dotenv.helpers.js +37 -1
- package/dist/esm/utils/dynamic-loader.js +254 -9
- package/dist/esm/utils/features/api.features.js +162 -1
- package/dist/esm/utils/features/change-case.features.js +31 -1
- package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
- package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
- package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
- package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
- package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
- package/dist/esm/utils/helpers/fs.helpers.js +48 -1
- package/dist/esm/utils/helpers/global.helpers.js +51 -1
- package/dist/esm/utils/helpers/prisma.helpers.js +32 -1
- package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
- package/dist/esm/utils/helpers/routers.helpers.js +29 -1
- package/dist/esm/utils/helpers/text.helpers.js +22 -1
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
- package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
- package/dist/esm/utils/prisma/types.js +2 -1
- package/dist/esm/utils/sheu.js +118 -1
- package/dist/esm/utils/validate-dto.js +11 -1
- package/dist/esm/utils/validate-schema.js +9 -1
- package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
- package/dist/types/modules/base/types/base.service.types.d.ts +12 -9
- package/dist/types/types/arkos-config.d.ts +3 -2
- package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
- package/package.json +2 -2
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
- /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import prismaSchemaParser from "../prisma/prisma-schema-parser.js";
|
|
2
|
+
import { kebabCase } from "../helpers/change-case.helpers.js";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import { execSync } from "child_process";
|
|
5
|
+
import sheu from "../sheu.js";
|
|
6
|
+
import path from "path";
|
|
7
|
+
export default function prismaGenerateCommand() {
|
|
8
|
+
const content = `
|
|
9
|
+
import { ModelGroupRelationFields } from "./utils/helpers/base.service.helpers.js";
|
|
10
|
+
import { ServiceBaseContext } from "./types/base.service.types.js";
|
|
11
|
+
import { Prisma } from "@prisma/client"
|
|
12
|
+
|
|
13
|
+
declare type ModelsGetPayload<T extends Record<string, any>> = {
|
|
14
|
+
${prismaSchemaParser.models.map((model) => `
|
|
15
|
+
"${kebabCase(model.name)}": {
|
|
16
|
+
Delegate: Prisma.${model.name}Delegate,
|
|
17
|
+
GetPayload: Prisma.${model.name}GetPayload<T>,
|
|
18
|
+
FindManyArgs: Prisma.${model.name}FindManyArgs,
|
|
19
|
+
FindFirstArgs: Prisma.${model.name}FindFirstArgs,
|
|
20
|
+
CreateArgs: Prisma.${model.name}CreateArgs,
|
|
21
|
+
CreateManyArgs: Prisma.${model.name}CreateManyArgs,
|
|
22
|
+
UpdateArgs: Prisma.${model.name}UpdateArgs,
|
|
23
|
+
UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,
|
|
24
|
+
DeleteArgs: Prisma.${model.name}DeleteArgs,
|
|
25
|
+
DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,
|
|
26
|
+
CountArgs: Prisma.${model.name}CountArgs
|
|
27
|
+
}
|
|
28
|
+
`)}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;
|
|
32
|
+
export type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;
|
|
33
|
+
export type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;
|
|
34
|
+
|
|
35
|
+
export declare class BaseService<
|
|
36
|
+
TModelName extends keyof ModelsGetPayload<any>
|
|
37
|
+
> {
|
|
38
|
+
modelName: TModelName;
|
|
39
|
+
relationFields: ModelGroupRelationFields;
|
|
40
|
+
prisma: any;
|
|
41
|
+
|
|
42
|
+
constructor(modelName: TModelName);
|
|
43
|
+
|
|
44
|
+
createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(
|
|
45
|
+
data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>,
|
|
46
|
+
queryOptions?: TOptions,
|
|
47
|
+
context?: ServiceBaseContext
|
|
48
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
|
|
49
|
+
|
|
50
|
+
createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(
|
|
51
|
+
data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>,
|
|
52
|
+
queryOptions?: TOptions,
|
|
53
|
+
context?: ServiceBaseContext
|
|
54
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;
|
|
55
|
+
|
|
56
|
+
count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(
|
|
57
|
+
filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>,
|
|
58
|
+
queryOptions?: TOptions,
|
|
59
|
+
context?: ServiceBaseContext
|
|
60
|
+
): Promise<number>;
|
|
61
|
+
|
|
62
|
+
findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(
|
|
63
|
+
filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>,
|
|
64
|
+
queryOptions?: TOptions,
|
|
65
|
+
context?: ServiceBaseContext
|
|
66
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;
|
|
67
|
+
|
|
68
|
+
findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(
|
|
69
|
+
id: string | number,
|
|
70
|
+
queryOptions?: TOptions,
|
|
71
|
+
context?: ServiceBaseContext
|
|
72
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;
|
|
73
|
+
|
|
74
|
+
findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(
|
|
75
|
+
filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>,
|
|
76
|
+
queryOptions?: TOptions,
|
|
77
|
+
context?: ServiceBaseContext
|
|
78
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;
|
|
79
|
+
|
|
80
|
+
updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(
|
|
81
|
+
filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>,
|
|
82
|
+
data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>,
|
|
83
|
+
queryOptions?: TOptions,
|
|
84
|
+
context?: ServiceBaseContext
|
|
85
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
|
|
86
|
+
|
|
87
|
+
updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(
|
|
88
|
+
filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>,
|
|
89
|
+
data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>,
|
|
90
|
+
queryOptions?: TOptions,
|
|
91
|
+
context?: ServiceBaseContext
|
|
92
|
+
): Promise<{ count: number }>;
|
|
93
|
+
|
|
94
|
+
deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(
|
|
95
|
+
filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>,
|
|
96
|
+
queryOptions?: TOptions,
|
|
97
|
+
context?: ServiceBaseContext
|
|
98
|
+
): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
|
|
99
|
+
|
|
100
|
+
deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(
|
|
101
|
+
filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>,
|
|
102
|
+
queryOptions?: TOptions,
|
|
103
|
+
context?: ServiceBaseContext
|
|
104
|
+
): Promise<{ count: number }>;
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
execSync("npx prisma generate", { stdio: "inherit" });
|
|
108
|
+
const filePath = path.resolve(__dirname, `../../../types/modules/base/base.service.d.ts`);
|
|
109
|
+
fs.writeFileSync(filePath, content, {
|
|
110
|
+
encoding: "utf8",
|
|
111
|
+
});
|
|
112
|
+
sheu.done("Types for @prisma/client and BaseService generated successfully!");
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=prisma-generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/prisma-generate.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAG;;;;;;EAMlB,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAC3B,CAAC,KAAK,EAAE,EAAE,CACN;OACD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;2BACD,KAAK,CAAC,IAAI;6BACR,KAAK,CAAC,IAAI;+BACR,KAAK,CAAC,IAAI;gCACT,KAAK,CAAC,IAAI;6BACb,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;4BACf,KAAK,CAAC,IAAI;;CAErC,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EA,CAAC;IACE,QAAQ,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CACzB,SAAS,EACT,+CAA+C,CAClD,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CACL,kEAAkE,CACrE,CAAC;AACN,CAAC","sourcesContent":["import prismaSchemaParser from \"../prisma/prisma-schema-parser\";\nimport { kebabCase } from \"../helpers/change-case.helpers\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport sheu from \"../sheu\";\nimport path from \"path\";\n\nexport default function prismaGenerateCommand() {\n const content = `\nimport { ModelGroupRelationFields } from \"./utils/helpers/base.service.helpers\";\nimport { ServiceBaseContext } from \"./types/base.service.types\";\nimport { Prisma } from \"@prisma/client\"\n\ndeclare type ModelsGetPayload<T extends Record<string, any>> = {\n${prismaSchemaParser.models.map(\n (model) =>\n `\n \"${kebabCase(model.name)}\": {\n Delegate: Prisma.${model.name}Delegate,\n GetPayload: Prisma.${model.name}GetPayload<T>,\n FindManyArgs: Prisma.${model.name}FindManyArgs,\n FindFirstArgs: Prisma.${model.name}FindFirstArgs,\n CreateArgs: Prisma.${model.name}CreateArgs,\n CreateManyArgs: Prisma.${model.name}CreateManyArgs,\n UpdateArgs: Prisma.${model.name}UpdateArgs,\n UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,\n DeleteArgs: Prisma.${model.name}DeleteArgs,\n DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,\n CountArgs: Prisma.${model.name}CountArgs\n }\n`\n)}\n}\n\nexport type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;\nexport type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;\nexport type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;\n\nexport declare class BaseService<\n TModelName extends keyof ModelsGetPayload<any>\n> {\n modelName: TModelName;\n relationFields: ModelGroupRelationFields;\n prisma: any;\n \n constructor(modelName: TModelName);\n \n createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<number>;\n \n findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n id: string | number, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n \n deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n}\n`;\n execSync(\"npx prisma generate\", { stdio: \"inherit\" });\n\n const filePath = path.resolve(\n __dirname,\n `../../../types/modules/base/base.service.d.ts`\n );\n fs.writeFileSync(filePath, content, {\n encoding: \"utf8\",\n });\n sheu.done(\n \"Types for @prisma/client and BaseService generated successfully!\"\n );\n}\n"]}
|
|
@@ -1 +1,96 @@
|
|
|
1
|
-
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { spawn } from "child_process";
|
|
4
|
+
import { loadEnvironmentVariables } from "../dotenv.helpers.js";
|
|
5
|
+
import { importModule } from "../helpers/global.helpers.js";
|
|
6
|
+
import { fullCleanCwd } from "../helpers/fs.helpers.js";
|
|
7
|
+
import portAndHostAllocator from "../features/port-and-host-allocator.js";
|
|
8
|
+
import watermarkStamper from "./utils/watermark-stamper.js";
|
|
9
|
+
let child = null;
|
|
10
|
+
let envFiles;
|
|
11
|
+
export async function startCommand(options = {}) {
|
|
12
|
+
process.env.NODE_ENV = "production";
|
|
13
|
+
envFiles = loadEnvironmentVariables();
|
|
14
|
+
try {
|
|
15
|
+
const { port, host } = options;
|
|
16
|
+
const entryPoint = path.join(process.cwd(), ".build", "src", "app.js");
|
|
17
|
+
if (!fs.existsSync(path.join(entryPoint))) {
|
|
18
|
+
console.error(`❌ Could not find built application entry point at ${fullCleanCwd(entryPoint)}`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const env = {
|
|
22
|
+
...process.env,
|
|
23
|
+
NODE_ENV: "production",
|
|
24
|
+
...(port && { CLI_PORT: port }),
|
|
25
|
+
...(host && { CLI_HOST: host }),
|
|
26
|
+
ARKOS_BUILD: "true",
|
|
27
|
+
};
|
|
28
|
+
child = spawn("node", [entryPoint], {
|
|
29
|
+
stdio: "inherit",
|
|
30
|
+
env,
|
|
31
|
+
shell: true,
|
|
32
|
+
});
|
|
33
|
+
process.on("SIGINT", () => {
|
|
34
|
+
if (child) {
|
|
35
|
+
child.kill();
|
|
36
|
+
}
|
|
37
|
+
process.exit(0);
|
|
38
|
+
});
|
|
39
|
+
const checkConfig = async () => {
|
|
40
|
+
try {
|
|
41
|
+
const { getArkosConfig } = await importModule("../../server");
|
|
42
|
+
const config = getArkosConfig();
|
|
43
|
+
if (config && config.available) {
|
|
44
|
+
const hostAndPort = await portAndHostAllocator.getHostAndAvailablePort(env, {
|
|
45
|
+
...config,
|
|
46
|
+
logWarning: true,
|
|
47
|
+
});
|
|
48
|
+
watermarkStamper.stamp({
|
|
49
|
+
envFiles,
|
|
50
|
+
port: "port" in config && config?.port !== undefined
|
|
51
|
+
? hostAndPort.port
|
|
52
|
+
: undefined,
|
|
53
|
+
host: hostAndPort.host,
|
|
54
|
+
});
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (!err?.message?.includes("../../server"))
|
|
61
|
+
console.error(err);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const waitForConfig = async () => {
|
|
66
|
+
let attempts = 0;
|
|
67
|
+
const maxAttempts = 15;
|
|
68
|
+
while (attempts < maxAttempts) {
|
|
69
|
+
const ready = await checkConfig();
|
|
70
|
+
if (ready)
|
|
71
|
+
break;
|
|
72
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
73
|
+
attempts++;
|
|
74
|
+
}
|
|
75
|
+
if (attempts >= maxAttempts) {
|
|
76
|
+
if (env.CLI_PORT || env.PORT)
|
|
77
|
+
portAndHostAllocator.logWarnings();
|
|
78
|
+
watermarkStamper.stamp({
|
|
79
|
+
envFiles,
|
|
80
|
+
host: env.CLI_HOST || env.HOST,
|
|
81
|
+
port: env.CLI_PORT || env.PORT,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
waitForConfig();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error("❌ Production server failed to start:", error);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function killProductionServerChildProcess() {
|
|
93
|
+
child?.kill?.();
|
|
94
|
+
child = null;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import { killDevelopmentServerChildProcess } from "../dev.js";
|
|
3
|
+
import { killProductionServerChildProcess } from "../start.js";
|
|
4
|
+
export function ensureDirectoryExists(dirPath) {
|
|
5
|
+
if (!fs.existsSync(dirPath)) {
|
|
6
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function killServerChildProcess() {
|
|
10
|
+
killDevelopmentServerChildProcess();
|
|
11
|
+
killProductionServerChildProcess();
|
|
12
|
+
}
|
|
13
|
+
export function getVersion() {
|
|
14
|
+
return "1.3.2-beta";
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=cli.helpers.js.map
|
|
@@ -1 +1,68 @@
|
|
|
1
|
-
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import path from "path";
|
|
3
|
+
class SmartFSWather {
|
|
4
|
+
start(onNewFile) {
|
|
5
|
+
this.watchedFiles = new Set();
|
|
6
|
+
this.watcher = null;
|
|
7
|
+
this.onNewFile = onNewFile;
|
|
8
|
+
this.watcher = chokidar.watch([
|
|
9
|
+
"src",
|
|
10
|
+
"package.json",
|
|
11
|
+
"tsconfig.json",
|
|
12
|
+
"jsconfig.json",
|
|
13
|
+
"arkos.config.ts",
|
|
14
|
+
"arkos.config.js",
|
|
15
|
+
], {
|
|
16
|
+
ignoreInitial: true,
|
|
17
|
+
ignored: [
|
|
18
|
+
/node_modules/,
|
|
19
|
+
/\.git/,
|
|
20
|
+
/\.dist/,
|
|
21
|
+
/\.build/,
|
|
22
|
+
/dist/,
|
|
23
|
+
/build/,
|
|
24
|
+
/\.env.*/,
|
|
25
|
+
],
|
|
26
|
+
awaitWriteFinish: {
|
|
27
|
+
stabilityThreshold: 1000,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
this.setupListeners();
|
|
31
|
+
}
|
|
32
|
+
setupListeners() {
|
|
33
|
+
if (!this.watcher)
|
|
34
|
+
return;
|
|
35
|
+
this.watcher
|
|
36
|
+
.on("add", (filePath) => {
|
|
37
|
+
const wasAlreadyWatched = this.watchedFiles.has(filePath);
|
|
38
|
+
if (!wasAlreadyWatched)
|
|
39
|
+
this.onNewFile(filePath);
|
|
40
|
+
this.watchedFiles.add(filePath);
|
|
41
|
+
})
|
|
42
|
+
.on("ready", () => {
|
|
43
|
+
const initiallyWatched = this.watcher.getWatched();
|
|
44
|
+
Object.entries(initiallyWatched).forEach(([dir, files]) => {
|
|
45
|
+
files.forEach((file) => {
|
|
46
|
+
const fullPath = path.join(dir, file);
|
|
47
|
+
this.watchedFiles.add(fullPath);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
})
|
|
51
|
+
.on("unlink", (filePath) => {
|
|
52
|
+
this.watchedFiles.delete(filePath);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
reset() {
|
|
56
|
+
this.watchedFiles?.clear();
|
|
57
|
+
}
|
|
58
|
+
close() {
|
|
59
|
+
if (this.watcher) {
|
|
60
|
+
this.watcher.close();
|
|
61
|
+
this.watcher = null;
|
|
62
|
+
}
|
|
63
|
+
this.watchedFiles?.clear();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const smartFsWatcher = new SmartFSWather();
|
|
67
|
+
export default smartFsWatcher;
|
|
68
|
+
//# sourceMappingURL=smart-fs-watcher.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
|
|
2
|
+
export function generateAuthConfigsTemplate(options) {
|
|
3
|
+
const { modelName } = options;
|
|
4
|
+
const ext = getUserFileExtension();
|
|
5
|
+
const isTypeScript = ext === "ts";
|
|
6
|
+
if (!modelName)
|
|
7
|
+
throw new Error("Model name is required for auth config template");
|
|
8
|
+
const imports = isTypeScript
|
|
9
|
+
? `import { AuthConfigs } from 'arkos/auth';\n`
|
|
10
|
+
: "";
|
|
11
|
+
const typeAnnotation = isTypeScript ? `: AuthConfigs` : "";
|
|
12
|
+
return `${imports}
|
|
13
|
+
const ${modelName.camel}AuthConfigs${typeAnnotation} = {
|
|
14
|
+
authenticationControl: {
|
|
15
|
+
// Create: true,
|
|
16
|
+
// Update: true,
|
|
17
|
+
// Delete: true,
|
|
18
|
+
// View: false,
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
// Only when using Static RBAC
|
|
22
|
+
accessControl: {
|
|
23
|
+
// Create: ["Admin"],
|
|
24
|
+
// Update: ["Admin", "Manager"],
|
|
25
|
+
// Delete: ["Admin"],
|
|
26
|
+
// View: ["User", "Admin", "Guest"],
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default ${modelName.camel}AuthConfigs;
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=auth-configs-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-configs-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/auth-configs-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,2BAA2B,CAAC,OAAwB;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAGrE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,OAAO,GAAG,OAAO;QACX,SAAS,CAAC,KAAK,cAAc,cAAc;;;;;;;;;;;;;;;;;iBAiBlC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateAuthConfigsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for auth config template\");\n\n // Generate imports for TypeScript\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript ? `: AuthConfigs` : \"\";\n\n return `${imports}\nconst ${modelName.camel}AuthConfigs${typeAnnotation} = {\n authenticationControl: {\n // Create: true,\n // Update: true,\n // Delete: true,\n // View: false,\n },\n \n // Only when using Static RBAC\n accessControl: {\n // Create: [\"Admin\"],\n // Update: [\"Admin\", \"Manager\"],\n // Delete: [\"Admin\"],\n // View: [\"User\", \"Admin\", \"Guest\"],\n },\n};\n\nexport default ${modelName.camel}AuthConfigs;\n`;\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function generateControllerTemplate(options) {
|
|
2
|
+
const { modelName, imports } = options;
|
|
3
|
+
if (!modelName)
|
|
4
|
+
throw new Error("Model name is required for controller template");
|
|
5
|
+
return `import { BaseController } from "${imports?.baseController || "arkos/controllers"}";
|
|
6
|
+
|
|
7
|
+
class ${modelName.pascal}Controller extends BaseController {
|
|
8
|
+
constructor() {
|
|
9
|
+
super("${modelName.kebab}");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const ${modelName.camel}Controller = new ${modelName.pascal}Controller();
|
|
14
|
+
|
|
15
|
+
export default ${modelName.camel}Controller;
|
|
16
|
+
`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=controller-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/controller-template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,OAAwB;IACjE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,OAAO,mCACL,OAAO,EAAE,cAAc,IAAI,mBAC7B;;QAEM,SAAS,CAAC,MAAM;;aAEX,SAAS,CAAC,KAAK;;;;QAIpB,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM;;iBAE1C,SAAS,CAAC,KAAK;GAC7B,CAAC;AACJ,CAAC","sourcesContent":["import { TemplateOptions } from \"../../template-generators\";\n\nexport function generateControllerTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName)\n throw new Error(\"Model name is required for controller template\");\n\n return `import { BaseController } from \"${\n imports?.baseController || \"arkos/controllers\"\n }\";\n \nclass ${modelName.pascal}Controller extends BaseController {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller();\n\nexport default ${modelName.camel}Controller;\n `;\n}\n"]}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
|
|
2
|
+
export default function generateHooksTemplate(options) {
|
|
3
|
+
const { modelName } = options;
|
|
4
|
+
const ext = getUserFileExtension();
|
|
5
|
+
const isTypeScript = ext === "ts";
|
|
6
|
+
if (!modelName)
|
|
7
|
+
throw new Error("Model name is required for hooks template");
|
|
8
|
+
const baseImports = isTypeScript
|
|
9
|
+
? `// import {
|
|
10
|
+
// BeforeFindOneHookArgs,
|
|
11
|
+
// AfterFindOneHookArgs,
|
|
12
|
+
// BeforeUpdateOneHookArgs,
|
|
13
|
+
// AfterUpdateOneHookArgs,
|
|
14
|
+
// BeforeCreateOneHookArgs,
|
|
15
|
+
// AfterCreateOneHookArgs,
|
|
16
|
+
// BeforeCreateManyHookArgs,
|
|
17
|
+
// AfterCreateManyHookArgs,
|
|
18
|
+
// BeforeCountHookArgs,
|
|
19
|
+
// AfterCountHookArgs,
|
|
20
|
+
// BeforeFindManyHookArgs,
|
|
21
|
+
// AfterFindManyHookArgs,
|
|
22
|
+
// BeforeUpdateManyHookArgs,
|
|
23
|
+
// AfterUpdateManyHookArgs,
|
|
24
|
+
// BeforeDeleteOneHookArgs,
|
|
25
|
+
// AfterDeleteOneHookArgs,
|
|
26
|
+
// BeforeDeleteManyHookArgs,
|
|
27
|
+
// AfterDeleteManyHookArgs,
|
|
28
|
+
// OnCreateOneErrorHookArgs,
|
|
29
|
+
// OnCreateManyErrorHookArgs,
|
|
30
|
+
// OnCountErrorHookArgs,
|
|
31
|
+
// OnFindManyErrorHookArgs,
|
|
32
|
+
// OnFindByIdErrorHookArgs,
|
|
33
|
+
// OnFindOneErrorHookArgs,
|
|
34
|
+
// OnUpdateOneErrorHookArgs,
|
|
35
|
+
// OnUpdateManyErrorHookArgs,
|
|
36
|
+
// OnDeleteOneErrorHookArgs,
|
|
37
|
+
// OnDeleteManyErrorHookArgs
|
|
38
|
+
// } from "arkos/services";`
|
|
39
|
+
: ``;
|
|
40
|
+
const serviceImport = `"./${modelName.kebab}.service${ext === "ts" ? "" : "." + "js"}";`;
|
|
41
|
+
const getHookArgsType = (hookName) => {
|
|
42
|
+
if (!isTypeScript)
|
|
43
|
+
return "";
|
|
44
|
+
const typeMap = {
|
|
45
|
+
beforeFindOne: `BeforeFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
46
|
+
afterFindOne: `AfterFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
47
|
+
beforeUpdateOne: `BeforeUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
48
|
+
afterUpdateOne: `AfterUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
49
|
+
beforeCreateOne: `BeforeCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
50
|
+
afterCreateOne: `AfterCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
51
|
+
beforeCreateMany: `BeforeCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
52
|
+
afterCreateMany: `AfterCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
53
|
+
beforeCount: `BeforeCountHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
54
|
+
afterCount: `AfterCountHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
55
|
+
beforeFindMany: `BeforeFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
56
|
+
afterFindMany: `AfterFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
57
|
+
beforeUpdateMany: `BeforeUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
58
|
+
afterUpdateMany: `AfterUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
59
|
+
beforeDeleteOne: `BeforeDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
60
|
+
afterDeleteOne: `AfterDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
61
|
+
beforeDeleteMany: `BeforeDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
62
|
+
afterDeleteMany: `AfterDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
63
|
+
onCreateOneError: `OnCreateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
64
|
+
onCreateManyError: `OnCreateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
65
|
+
onCountError: `OnCountErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
66
|
+
onFindManyError: `OnFindManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
67
|
+
onFindByIdError: `OnFindByIdErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
68
|
+
onFindOneError: `OnFindOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
69
|
+
onUpdateOneError: `OnUpdateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
70
|
+
onUpdateManyError: `OnUpdateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
71
|
+
onDeleteOneError: `OnDeleteOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
72
|
+
onDeleteManyError: `OnDeleteManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
|
|
73
|
+
};
|
|
74
|
+
return typeMap[hookName];
|
|
75
|
+
};
|
|
76
|
+
const generateHookFunction = (hookName, params) => {
|
|
77
|
+
const argsType = getHookArgsType(hookName);
|
|
78
|
+
const args = isTypeScript
|
|
79
|
+
? `{ ${params.join(", ")} }: ${argsType}`
|
|
80
|
+
: `{ ${params.join(", ")} }`;
|
|
81
|
+
return `async function (${args}) {}`;
|
|
82
|
+
};
|
|
83
|
+
const hooks = `
|
|
84
|
+
// export const beforeFindOne = [
|
|
85
|
+
// ${generateHookFunction("beforeFindOne", ["context", "filters", "queryOptions"])}
|
|
86
|
+
// ];
|
|
87
|
+
|
|
88
|
+
// export const afterFindOne = [
|
|
89
|
+
// ${generateHookFunction("afterFindOne", ["context", "result", "filters", "queryOptions"])}
|
|
90
|
+
// ];
|
|
91
|
+
|
|
92
|
+
// export const onFindOneError = [
|
|
93
|
+
// ${generateHookFunction("onFindOneError", ["context", "error", "filters", "queryOptions"])}
|
|
94
|
+
// ];
|
|
95
|
+
|
|
96
|
+
// export const beforeUpdateOne = [
|
|
97
|
+
// ${generateHookFunction("beforeUpdateOne", ["context", "filters", "data", "queryOptions"])}
|
|
98
|
+
// ];
|
|
99
|
+
|
|
100
|
+
// export const afterUpdateOne = [
|
|
101
|
+
// ${generateHookFunction("afterUpdateOne", ["context", "result", "filters", "data", "queryOptions"])}
|
|
102
|
+
// ];
|
|
103
|
+
|
|
104
|
+
// export const onUpdateOneError = [
|
|
105
|
+
// ${generateHookFunction("onUpdateOneError", ["context", "error", "filters", "data", "queryOptions"])}
|
|
106
|
+
// ];
|
|
107
|
+
|
|
108
|
+
// export const beforeCreateOne = [
|
|
109
|
+
// ${generateHookFunction("beforeCreateOne", ["context", "data", "queryOptions"])}
|
|
110
|
+
// ];
|
|
111
|
+
|
|
112
|
+
// export const afterCreateOne = [
|
|
113
|
+
// ${generateHookFunction("afterCreateOne", ["context", "result", "data", "queryOptions"])}
|
|
114
|
+
// ];
|
|
115
|
+
|
|
116
|
+
// export const onCreateOneError = [
|
|
117
|
+
// ${generateHookFunction("onCreateOneError", ["context", "error", "data", "queryOptions"])}
|
|
118
|
+
// ];
|
|
119
|
+
|
|
120
|
+
// export const beforeCreateMany = [
|
|
121
|
+
// ${generateHookFunction("beforeCreateMany", ["context", "data", "queryOptions"])}
|
|
122
|
+
// ];
|
|
123
|
+
|
|
124
|
+
// export const afterCreateMany = [
|
|
125
|
+
// ${generateHookFunction("afterCreateMany", ["context", "result", "queryOptions"])}
|
|
126
|
+
// ];
|
|
127
|
+
|
|
128
|
+
// export const onCreateManyError = [
|
|
129
|
+
// ${generateHookFunction("onCreateManyError", ["context", "error", "data", "queryOptions"])}
|
|
130
|
+
// ];
|
|
131
|
+
|
|
132
|
+
// export const beforeCount = [
|
|
133
|
+
// ${generateHookFunction("beforeCount", ["context", "filters"])}
|
|
134
|
+
// ];
|
|
135
|
+
|
|
136
|
+
// export const afterCount = [
|
|
137
|
+
// ${generateHookFunction("afterCount", ["context", "result", "filters"])}
|
|
138
|
+
// ];
|
|
139
|
+
|
|
140
|
+
// export const onCountError = [
|
|
141
|
+
// ${generateHookFunction("onCountError", ["context", "error", "filters"])}
|
|
142
|
+
// ];
|
|
143
|
+
|
|
144
|
+
// export const beforeFindMany = [
|
|
145
|
+
// ${generateHookFunction("beforeFindMany", ["context", "filters", "queryOptions"])}
|
|
146
|
+
// ];
|
|
147
|
+
|
|
148
|
+
// export const afterFindMany = [
|
|
149
|
+
// ${generateHookFunction("afterFindMany", ["context", "result", "filters", "queryOptions"])}
|
|
150
|
+
// ];
|
|
151
|
+
|
|
152
|
+
// export const onFindManyError = [
|
|
153
|
+
// ${generateHookFunction("onFindManyError", ["context", "error", "filters", "queryOptions"])}
|
|
154
|
+
// ];
|
|
155
|
+
|
|
156
|
+
// export const beforeUpdateMany = [
|
|
157
|
+
// ${generateHookFunction("beforeUpdateMany", ["context", "filters", "data", "queryOptions"])}
|
|
158
|
+
// ];
|
|
159
|
+
|
|
160
|
+
// export const afterUpdateMany = [
|
|
161
|
+
// ${generateHookFunction("afterUpdateMany", ["context", "result", "filters", "data", "queryOptions"])}
|
|
162
|
+
// ];
|
|
163
|
+
|
|
164
|
+
// export const onUpdateManyError = [
|
|
165
|
+
// ${generateHookFunction("onUpdateManyError", ["context", "error", "filters", "data", "queryOptions"])}
|
|
166
|
+
// ];
|
|
167
|
+
|
|
168
|
+
// export const beforeDeleteOne = [
|
|
169
|
+
// ${generateHookFunction("beforeDeleteOne", ["context", "filters"])}
|
|
170
|
+
// ];
|
|
171
|
+
|
|
172
|
+
// export const afterDeleteOne = [
|
|
173
|
+
// ${generateHookFunction("afterDeleteOne", ["context", "result", "filters"])}
|
|
174
|
+
// ];
|
|
175
|
+
|
|
176
|
+
// export const onDeleteOneError = [
|
|
177
|
+
// ${generateHookFunction("onDeleteOneError", ["context", "error", "filters"])}
|
|
178
|
+
// ];
|
|
179
|
+
|
|
180
|
+
// export const beforeDeleteMany = [
|
|
181
|
+
// ${generateHookFunction("beforeDeleteMany", ["context", "filters"])}
|
|
182
|
+
// ];
|
|
183
|
+
|
|
184
|
+
// export const afterDeleteMany = [
|
|
185
|
+
// ${generateHookFunction("afterDeleteMany", ["context", "result", "filters"])}
|
|
186
|
+
// ];
|
|
187
|
+
|
|
188
|
+
// export const onDeleteManyError = [
|
|
189
|
+
// ${generateHookFunction("onDeleteManyError", ["context", "error", "filters"])}
|
|
190
|
+
// ];
|
|
191
|
+
`;
|
|
192
|
+
return `${baseImports}
|
|
193
|
+
// import { Prisma } from "@prisma/client"
|
|
194
|
+
// import ${modelName.camel}Service from ${serviceImport}
|
|
195
|
+
|
|
196
|
+
${hooks}`;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=hooks-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/hooks-template.ts"],"names":[],"mappings":"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","sourcesContent":["// Import helper function to get user's file extension preference\nimport { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\n// Import template options interface\nimport { TemplateOptions } from \"../../template-generators\";\n\n// Main function to generate hooks template based on provided options\nexport default function generateHooksTemplate(\n options: TemplateOptions\n): string {\n // Destructure modelName from options\n const { modelName } = options;\n // Get user's preferred file extension (ts or js)\n const ext = getUserFileExtension();\n // Check if user is using TypeScript\n const isTypeScript = ext === \"ts\";\n\n // Throw error if modelName is not provided\n if (!modelName) throw new Error(\"Model name is required for hooks template\");\n\n // Define base imports for TypeScript - includes all hook argument types\n const baseImports = isTypeScript\n ? `// import { \n// BeforeFindOneHookArgs, \n// AfterFindOneHookArgs, \n// BeforeUpdateOneHookArgs, \n// AfterUpdateOneHookArgs,\n// BeforeCreateOneHookArgs,\n// AfterCreateOneHookArgs,\n// BeforeCreateManyHookArgs,\n// AfterCreateManyHookArgs,\n// BeforeCountHookArgs,\n// AfterCountHookArgs,\n// BeforeFindManyHookArgs,\n// AfterFindManyHookArgs,\n// BeforeUpdateManyHookArgs,\n// AfterUpdateManyHookArgs,\n// BeforeDeleteOneHookArgs,\n// AfterDeleteOneHookArgs,\n// BeforeDeleteManyHookArgs,\n// AfterDeleteManyHookArgs,\n// OnCreateOneErrorHookArgs,\n// OnCreateManyErrorHookArgs,\n// OnCountErrorHookArgs,\n// OnFindManyErrorHookArgs,\n// OnFindByIdErrorHookArgs,\n// OnFindOneErrorHookArgs,\n// OnUpdateOneErrorHookArgs,\n// OnUpdateManyErrorHookArgs,\n// OnDeleteOneErrorHookArgs,\n// OnDeleteManyErrorHookArgs\n// } from \"arkos/services\";`\n : ``;\n\n // Define service import path based on file extension\n const serviceImport = `\"./${modelName.kebab}.service${ext === \"ts\" ? \"\" : \".\" + \"js\"}\";`;\n\n // Function to get the appropriate TypeScript type for each hook\n const getHookArgsType = (hookName: string) => {\n // Return empty string for JavaScript\n if (!isTypeScript) return \"\";\n\n // Map hook names to their corresponding TypeScript types\n const typeMap: Record<string, string> = {\n beforeFindOne: `BeforeFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterFindOne: `AfterFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeUpdateOne: `BeforeUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterUpdateOne: `AfterUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCreateOne: `BeforeCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCreateOne: `AfterCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCreateMany: `BeforeCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCreateMany: `AfterCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCount: `BeforeCountHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCount: `AfterCountHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeFindMany: `BeforeFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterFindMany: `AfterFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeUpdateMany: `BeforeUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterUpdateMany: `AfterUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeDeleteOne: `BeforeDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterDeleteOne: `AfterDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeDeleteMany: `BeforeDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterDeleteMany: `AfterDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n // Error hook types\n onCreateOneError: `OnCreateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onCreateManyError: `OnCreateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onCountError: `OnCountErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindManyError: `OnFindManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindByIdError: `OnFindByIdErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindOneError: `OnFindOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onUpdateOneError: `OnUpdateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onUpdateManyError: `OnUpdateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onDeleteOneError: `OnDeleteOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onDeleteManyError: `OnDeleteManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n };\n\n // Return the corresponding type for the hook name\n return typeMap[hookName];\n };\n\n // Function to generate a hook function with proper TypeScript types\n const generateHookFunction = (hookName: string, params: string[]) => {\n // Get the TypeScript type for this hook\n const argsType = getHookArgsType(hookName);\n // Create function parameters with or without TypeScript types\n const args = isTypeScript\n ? `{ ${params.join(\", \")} }: ${argsType}`\n : `{ ${params.join(\", \")} }`;\n\n // Return the complete function definition\n return `async function (${args}) {}`;\n };\n\n // Generate all hook exports with their respective functions\n const hooks = `\n// export const beforeFindOne = [\n// ${generateHookFunction(\"beforeFindOne\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindOne = [\n// ${generateHookFunction(\"afterFindOne\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindOneError = [\n// ${generateHookFunction(\"onFindOneError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateOne = [\n// ${generateHookFunction(\"beforeUpdateOne\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateOne = [\n// ${generateHookFunction(\"afterUpdateOne\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateOneError = [\n// ${generateHookFunction(\"onUpdateOneError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateOne = [\n// ${generateHookFunction(\"beforeCreateOne\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateOne = [\n// ${generateHookFunction(\"afterCreateOne\", [\"context\", \"result\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onCreateOneError = [\n// ${generateHookFunction(\"onCreateOneError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateMany = [\n// ${generateHookFunction(\"beforeCreateMany\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateMany = [\n// ${generateHookFunction(\"afterCreateMany\", [\"context\", \"result\", \"queryOptions\"])}\n// ];\n\n// export const onCreateManyError = [\n// ${generateHookFunction(\"onCreateManyError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCount = [\n// ${generateHookFunction(\"beforeCount\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterCount = [\n// ${generateHookFunction(\"afterCount\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onCountError = [\n// ${generateHookFunction(\"onCountError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeFindMany = [\n// ${generateHookFunction(\"beforeFindMany\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindMany = [\n// ${generateHookFunction(\"afterFindMany\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindManyError = [\n// ${generateHookFunction(\"onFindManyError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateMany = [\n// ${generateHookFunction(\"beforeUpdateMany\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateMany = [\n// ${generateHookFunction(\"afterUpdateMany\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateManyError = [\n// ${generateHookFunction(\"onUpdateManyError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeDeleteOne = [\n// ${generateHookFunction(\"beforeDeleteOne\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteOne = [\n// ${generateHookFunction(\"afterDeleteOne\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteOneError = [\n// ${generateHookFunction(\"onDeleteOneError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeDeleteMany = [\n// ${generateHookFunction(\"beforeDeleteMany\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteMany = [\n// ${generateHookFunction(\"afterDeleteMany\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteManyError = [\n// ${generateHookFunction(\"onDeleteManyError\", [\"context\", \"error\", \"filters\"])}\n// ];\n`;\n\n // Return the complete template with imports, exports, and hook functions\n return `${baseImports}\n// import { Prisma } from \"@prisma/client\"\n// import ${modelName.camel}Service from ${serviceImport}\n\n${hooks}`;\n}\n"]}
|