arkos 1.2.13-test.1 → 1.2.13-test.3
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 +1 -138
- package/dist/cjs/exports/auth/index.js +1 -6
- package/dist/cjs/exports/controllers/index.js +1 -11
- package/dist/cjs/exports/error-handler/index.js +1 -11
- package/dist/cjs/exports/index.js +1 -12
- package/dist/cjs/exports/middlewares/index.js +1 -7
- package/dist/cjs/exports/prisma/index.js +1 -6
- package/dist/cjs/exports/services/index.js +1 -49
- package/dist/cjs/exports/utils/index.js +1 -44
- package/dist/cjs/exports/validation/index.js +1 -11
- package/dist/cjs/modules/auth/auth.controller.js +1 -194
- package/dist/cjs/modules/auth/auth.router.js +1 -50
- package/dist/cjs/modules/auth/auth.service.js +1 -185
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
- package/dist/cjs/modules/base/base.controller.js +1 -158
- package/dist/cjs/modules/base/base.middlewares.js +1 -92
- package/dist/cjs/modules/base/base.router.js +1 -24
- package/dist/cjs/modules/base/base.service.js +1 -128
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -97
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
- package/dist/cjs/modules/email/email.service.js +1 -104
- package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
- package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
- package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -201
- package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
- package/dist/cjs/modules/file-upload/file-upload.router.js +1 -44
- package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
- package/dist/cjs/modules/swagger/swagger.router.js +1 -119
- package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -270
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -66
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -41
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -29
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -30
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -471
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -575
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -253
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -105
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/paths.js +1 -9
- package/dist/cjs/server.js +5 -85
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/types/arkos-config.js +1 -3
- package/dist/cjs/types/auth.js +1 -3
- package/dist/cjs/types/index.js +1 -11
- package/dist/cjs/types/router-config.js +1 -3
- package/dist/cjs/utils/arkos-env.js +1 -9
- package/dist/cjs/utils/cli/build.js +6 -212
- package/dist/cjs/utils/cli/dev.js +5 -256
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +12 -189
- package/dist/cjs/utils/cli/index.js +1 -81
- package/dist/cjs/utils/cli/start.js +5 -94
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +38 -67
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
- package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
- package/dist/cjs/utils/dotenv.helpers.js +1 -43
- package/dist/cjs/utils/features/api.features.js +1 -167
- package/dist/cjs/utils/features/change-case.features.js +1 -67
- package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
- package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
- package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
- package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
- package/dist/cjs/utils/helpers/global.helpers.js +1 -89
- package/dist/cjs/utils/helpers/models.helpers.js +11 -339
- package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
- package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
- package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
- package/dist/cjs/utils/helpers/text.helpers.js +1 -28
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -451
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -1
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -88
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -158
- package/dist/cjs/utils/prisma/types.js +1 -3
- package/dist/cjs/utils/sheu.js +1 -119
- package/dist/cjs/utils/validate-dto.js +1 -17
- package/dist/cjs/utils/validate-schema.js +1 -15
- package/dist/esm/app.js +1 -0
- package/dist/esm/app.js.map +1 -0
- package/dist/esm/exports/auth/index.js +1 -0
- package/dist/esm/exports/auth/index.js.map +1 -0
- package/dist/esm/exports/controllers/index.js +1 -0
- package/dist/esm/exports/controllers/index.js.map +1 -0
- package/dist/esm/exports/error-handler/index.js +1 -0
- package/dist/esm/exports/error-handler/index.js.map +1 -0
- package/dist/esm/exports/index.js +1 -0
- package/dist/esm/exports/index.js.map +1 -0
- package/dist/esm/exports/middlewares/index.js +1 -0
- package/dist/esm/exports/middlewares/index.js.map +1 -0
- package/dist/esm/exports/prisma/index.js +1 -0
- package/dist/esm/exports/prisma/index.js.map +1 -0
- package/dist/esm/exports/services/index.js +1 -0
- package/dist/esm/exports/services/index.js.map +1 -0
- package/dist/esm/exports/utils/index.js +1 -0
- package/dist/esm/exports/utils/index.js.map +1 -0
- package/dist/esm/exports/validation/index.js +1 -0
- package/dist/esm/exports/validation/index.js.map +1 -0
- package/dist/esm/modules/auth/auth.controller.js +1 -0
- package/dist/esm/modules/auth/auth.controller.js.map +1 -0
- package/dist/esm/modules/auth/auth.router.js +1 -0
- package/dist/esm/modules/auth/auth.router.js.map +1 -0
- package/dist/esm/modules/auth/auth.service.js +1 -0
- package/dist/esm/modules/auth/auth.service.js.map +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -0
- package/dist/esm/modules/base/base.controller.js +1 -0
- package/dist/esm/modules/base/base.controller.js.map +1 -0
- package/dist/esm/modules/base/base.middlewares.js +1 -0
- package/dist/esm/modules/base/base.middlewares.js.map +1 -0
- package/dist/esm/modules/base/base.router.js +1 -0
- package/dist/esm/modules/base/base.router.js.map +1 -0
- package/dist/esm/modules/base/base.service.js +1 -0
- package/dist/esm/modules/base/base.service.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -0
- package/dist/esm/modules/email/email.service.js +1 -0
- package/dist/esm/modules/email/email.service.js.map +1 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
- package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
- package/dist/esm/modules/swagger/swagger.router.js +1 -0
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/paths.js +1 -0
- package/dist/esm/paths.js.map +1 -0
- package/dist/esm/server.js +5 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/types/arkos-config.js +1 -0
- package/dist/esm/types/arkos-config.js.map +1 -0
- package/dist/esm/types/auth.js +1 -0
- package/dist/esm/types/auth.js.map +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/router-config.js +1 -0
- package/dist/esm/types/router-config.js.map +1 -0
- package/dist/esm/utils/arkos-env.js +1 -0
- package/dist/esm/utils/arkos-env.js.map +1 -0
- package/dist/esm/utils/cli/build.js +6 -0
- package/dist/esm/utils/cli/build.js.map +1 -0
- package/dist/esm/utils/cli/dev.js +5 -0
- package/dist/esm/utils/cli/dev.js.map +1 -0
- package/dist/esm/utils/cli/generate.js +12 -0
- package/dist/esm/utils/cli/generate.js.map +1 -0
- package/dist/esm/utils/cli/index.js +1 -0
- package/dist/esm/utils/cli/index.js.map +1 -0
- package/dist/esm/utils/cli/start.js +5 -0
- package/dist/esm/utils/cli/start.js.map +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generators.js +2 -0
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -0
- package/dist/esm/utils/dotenv.helpers.js +1 -0
- package/dist/esm/utils/dotenv.helpers.js.map +1 -0
- package/dist/esm/utils/features/api.features.js +1 -0
- package/dist/esm/utils/features/api.features.js.map +1 -0
- package/dist/esm/utils/features/change-case.features.js +1 -0
- package/dist/esm/utils/features/change-case.features.js.map +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
- package/dist/esm/utils/helpers/change-case.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
- package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/global.helpers.js +1 -0
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/models.helpers.js +11 -0
- package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
- package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/text.helpers.js +1 -0
- package/dist/esm/utils/helpers/text.helpers.js.map +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
- package/dist/esm/utils/prisma/types.js +1 -0
- package/dist/esm/utils/prisma/types.js.map +1 -0
- package/dist/esm/utils/sheu.js +1 -0
- package/dist/esm/utils/sheu.js.map +1 -0
- package/dist/esm/utils/validate-dto.js +1 -0
- package/dist/esm/utils/validate-dto.js.map +1 -0
- package/dist/esm/utils/validate-schema.js +1 -0
- package/dist/esm/utils/validate-schema.js.map +1 -0
- package/package.json +6 -4
- package/dist/cjs/index.js +0 -22
- package/dist/esm/index.d.mts +0 -280
- package/dist/esm/index.mjs +0 -22
- package/dist/exports/index.js +0 -1
- package/dist/types/arkos-config.js +0 -1
- package/dist/types/auth.js +0 -1
- package/dist/types/index.js +0 -1
- package/dist/types/router-config.js +0 -1
- package/dist/utils/arkos-env.js +0 -1
- package/dist/utils/dotenv.helpers.js +0 -1
- package/dist/utils/sheu.js +0 -1
- package/dist/utils/validate-dto.js +0 -1
- package/dist/utils/validate-schema.js +0 -1
|
@@ -1,128 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BaseService = void 0;
|
|
7
|
-
exports.getBaseServices = getBaseServices;
|
|
8
|
-
const change_case_helpers_1 = require("../../utils/helpers/change-case.helpers");
|
|
9
|
-
const models_helpers_1 = require("../../utils/helpers/models.helpers");
|
|
10
|
-
const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
|
|
11
|
-
const base_service_helpers_1 = require("./utils/helpers/base.service.helpers");
|
|
12
|
-
const prisma_helpers_1 = require("../../utils/helpers/prisma.helpers");
|
|
13
|
-
const auth_service_1 = __importDefault(require("../auth/auth.service"));
|
|
14
|
-
class BaseService {
|
|
15
|
-
constructor(modelName) {
|
|
16
|
-
this.modelName = (0, change_case_helpers_1.camelCase)(modelName);
|
|
17
|
-
this.relationFields = (0, models_helpers_1.getPrismaModelRelations)((0, change_case_helpers_1.pascalCase)(modelName));
|
|
18
|
-
}
|
|
19
|
-
async createOne(data, queryOptions) {
|
|
20
|
-
if ((0, change_case_helpers_1.kebabCase)(this.modelName) === "user" && data.password)
|
|
21
|
-
if (!auth_service_1.default.isPasswordHashed(data.password))
|
|
22
|
-
data.password = await auth_service_1.default.hashPassword(data.password);
|
|
23
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
24
|
-
const dataWithRelationFieldsHandled = (0, base_service_helpers_1.handleRelationFieldsInBody)(data, {
|
|
25
|
-
...this.relationFields,
|
|
26
|
-
}, ["delete", "disconnect", "update"]);
|
|
27
|
-
return await prisma[this.modelName].create((0, deepmerge_helper_1.default)({
|
|
28
|
-
data: dataWithRelationFieldsHandled,
|
|
29
|
-
}, queryOptions || {}));
|
|
30
|
-
}
|
|
31
|
-
async createMany(data, queryOptions) {
|
|
32
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
33
|
-
const dataWithRelationFieldsHandled = [];
|
|
34
|
-
if (Array.isArray(data))
|
|
35
|
-
await new Promise((resolve) => {
|
|
36
|
-
data.forEach(async (curr, i) => {
|
|
37
|
-
if ("password" in curr && this.modelName === "user")
|
|
38
|
-
if (!auth_service_1.default.isPasswordHashed(curr.password))
|
|
39
|
-
data[i].password = await auth_service_1.default.hashPassword(curr?.password);
|
|
40
|
-
dataWithRelationFieldsHandled[i] = (0, base_service_helpers_1.handleRelationFieldsInBody)(data[i], {
|
|
41
|
-
...this.relationFields,
|
|
42
|
-
}, ["delete", "disconnect", "update"]);
|
|
43
|
-
if (i === data.length - 1)
|
|
44
|
-
resolve(null);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
return await prisma[this.modelName].createMany((0, deepmerge_helper_1.default)({ data: dataWithRelationFieldsHandled }, queryOptions || {}));
|
|
48
|
-
}
|
|
49
|
-
async count(filters) {
|
|
50
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
51
|
-
return await prisma[this.modelName].count({
|
|
52
|
-
where: filters,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
async findMany(filters, queryOptions) {
|
|
56
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
57
|
-
return await prisma[this.modelName].findMany((0, deepmerge_helper_1.default)({ where: filters }, queryOptions || {}));
|
|
58
|
-
}
|
|
59
|
-
async findById(id, queryOptions) {
|
|
60
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
61
|
-
return await prisma[this.modelName].findUnique((0, deepmerge_helper_1.default)({
|
|
62
|
-
where: { id },
|
|
63
|
-
}, queryOptions || {}));
|
|
64
|
-
}
|
|
65
|
-
async findOne(filters, queryOptions) {
|
|
66
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
67
|
-
if (Object.keys(filters).length === 1 &&
|
|
68
|
-
"id" in filters &&
|
|
69
|
-
filters.id !== "me")
|
|
70
|
-
return prisma[this.modelName].findUnique((0, deepmerge_helper_1.default)({
|
|
71
|
-
where: filters,
|
|
72
|
-
}, queryOptions || {}));
|
|
73
|
-
return await prisma[this.modelName].findFirst((0, deepmerge_helper_1.default)({
|
|
74
|
-
where: filters,
|
|
75
|
-
}, queryOptions || {}));
|
|
76
|
-
}
|
|
77
|
-
async updateOne(filters, data, queryOptions) {
|
|
78
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
79
|
-
if ((0, change_case_helpers_1.kebabCase)(this.modelName) === "user" && data?.password) {
|
|
80
|
-
if (!auth_service_1.default.isPasswordHashed(data.password))
|
|
81
|
-
data.password = await auth_service_1.default.hashPassword(data?.password);
|
|
82
|
-
}
|
|
83
|
-
const dataWithRelationFieldsHandled = (0, base_service_helpers_1.handleRelationFieldsInBody)(data, {
|
|
84
|
-
...this.relationFields,
|
|
85
|
-
});
|
|
86
|
-
return await prisma[this.modelName].update((0, deepmerge_helper_1.default)({
|
|
87
|
-
where: filters,
|
|
88
|
-
data: dataWithRelationFieldsHandled,
|
|
89
|
-
}, queryOptions || {}));
|
|
90
|
-
}
|
|
91
|
-
async updateMany(filters, data, queryOptions) {
|
|
92
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
93
|
-
if (Array.isArray(data) && this.modelName === "user")
|
|
94
|
-
await new Promise((resolve) => {
|
|
95
|
-
data.forEach(async (curr, i) => {
|
|
96
|
-
if ("password" in data[i])
|
|
97
|
-
if (!auth_service_1.default.isPasswordHashed(curr.password))
|
|
98
|
-
data[i].password = await auth_service_1.default.hashPassword(curr.password);
|
|
99
|
-
if (i === data.length - 1)
|
|
100
|
-
resolve(undefined);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
const firstMerge = (0, deepmerge_helper_1.default)({ data }, queryOptions || {});
|
|
104
|
-
return await prisma[this.modelName].updateMany((0, deepmerge_helper_1.default)({ where: filters }, firstMerge));
|
|
105
|
-
}
|
|
106
|
-
async deleteOne(filters) {
|
|
107
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
108
|
-
return await prisma[this.modelName].delete({
|
|
109
|
-
where: filters,
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
async deleteMany(filters) {
|
|
113
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
114
|
-
return await prisma[this.modelName].deleteMany({
|
|
115
|
-
where: filters,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
exports.BaseService = BaseService;
|
|
120
|
-
function getBaseServices() {
|
|
121
|
-
const models = (0, models_helpers_1.getModels)();
|
|
122
|
-
const baseServices = {};
|
|
123
|
-
models.forEach((model) => {
|
|
124
|
-
baseServices[`${(0, change_case_helpers_1.camelCase)(model)}`] = new BaseService(model);
|
|
125
|
-
});
|
|
126
|
-
return baseServices;
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=base.service.js.map
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseService=void 0,exports.getBaseServices=getBaseServices;const change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_service_helpers_1=require("./utils/helpers/base.service.helpers"),prisma_helpers_1=require("../../utils/helpers/prisma.helpers"),auth_service_1=__importDefault(require("../auth/auth.service"));class BaseService{constructor(e){this.modelName=(0,change_case_helpers_1.camelCase)(e),this.relationFields=(0,models_helpers_1.getPrismaModelRelations)((0,change_case_helpers_1.pascalCase)(e))}async createOne(e,s){(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&e.password&&(auth_service_1.default.isPasswordHashed(e.password)||(e.password=await auth_service_1.default.hashPassword(e.password)));const a=(0,prisma_helpers_1.getPrismaInstance)(),t=(0,base_service_helpers_1.handleRelationFieldsInBody)(e,{...this.relationFields},["delete","disconnect","update"]);return await a[this.modelName].create((0,deepmerge_helper_1.default)({data:t},s||{}))}async createMany(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)(),t=[];return Array.isArray(e)&&await new Promise(n=>{e.forEach(async(d,i)=>{"password"in d&&this.modelName==="user"&&(auth_service_1.default.isPasswordHashed(d.password)||(e[i].password=await auth_service_1.default.hashPassword(d?.password))),t[i]=(0,base_service_helpers_1.handleRelationFieldsInBody)(e[i],{...this.relationFields},["delete","disconnect","update"]),i===e.length-1&&n(null)})}),await a[this.modelName].createMany((0,deepmerge_helper_1.default)({data:t},s||{}))}async count(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].count({where:e})}async findMany(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findMany((0,deepmerge_helper_1.default)({where:e},s||{}))}async findById(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:{id:e}},s||{}))}async findOne(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)();return Object.keys(e).length===1&&"id"in e&&e.id!=="me"?a[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:e},s||{})):await a[this.modelName].findFirst((0,deepmerge_helper_1.default)({where:e},s||{}))}async updateOne(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&s?.password&&(auth_service_1.default.isPasswordHashed(s.password)||(s.password=await auth_service_1.default.hashPassword(s?.password)));const n=(0,base_service_helpers_1.handleRelationFieldsInBody)(s,{...this.relationFields});return await t[this.modelName].update((0,deepmerge_helper_1.default)({where:e,data:n},a||{}))}async updateMany(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();Array.isArray(s)&&this.modelName==="user"&&await new Promise(d=>{s.forEach(async(i,l)=>{"password"in s[l]&&(auth_service_1.default.isPasswordHashed(i.password)||(s[l].password=await auth_service_1.default.hashPassword(i.password))),l===s.length-1&&d(void 0)})});const n=(0,deepmerge_helper_1.default)({data:s},a||{});return await t[this.modelName].updateMany((0,deepmerge_helper_1.default)({where:e},n))}async deleteOne(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].delete({where:e})}async deleteMany(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].deleteMany({where:e})}}exports.BaseService=BaseService;function getBaseServices(){const r=(0,models_helpers_1.getModels)(),e={};return r.forEach(s=>{e[`${(0,change_case_helpers_1.camelCase)(s)}`]=new BaseService(s)}),e}
|
|
@@ -1,82 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAppRoutes = void 0;
|
|
4
|
-
exports.parseAndGetPrismaQueryOptions = parseAndGetPrismaQueryOptions;
|
|
5
|
-
const server_1 = require("../../../../server");
|
|
6
|
-
const getAppRoutes = () => {
|
|
7
|
-
const app = (0, server_1.getExpressApp)();
|
|
8
|
-
const routes = [];
|
|
9
|
-
app._router.stack.forEach((middleware) => {
|
|
10
|
-
if (middleware.route) {
|
|
11
|
-
Object.keys(middleware.route.methods).forEach((method) => {
|
|
12
|
-
routes.push({
|
|
13
|
-
method: method.toUpperCase(),
|
|
14
|
-
path: middleware.route.path,
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
else if (middleware.handle && middleware.handle.stack) {
|
|
19
|
-
let basePath = "";
|
|
20
|
-
if (middleware.regexp) {
|
|
21
|
-
const regexpStr = middleware.regexp.toString();
|
|
22
|
-
if (regexpStr.includes?.("/?(?=")) {
|
|
23
|
-
const match = regexpStr.match(/\/\^(\\\/[^?]+)/);
|
|
24
|
-
if (match) {
|
|
25
|
-
basePath = match[1].replace(/\\\//g, "/");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
const simpleMatch = regexpStr.match(/\/\^(\\\/[^\\]+)/);
|
|
30
|
-
if (simpleMatch) {
|
|
31
|
-
basePath = simpleMatch[1].replace(/\\\//g, "/");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
middleware.handle.stack.forEach((routerMiddleware) => {
|
|
36
|
-
if (routerMiddleware.route) {
|
|
37
|
-
Object.keys(routerMiddleware.route.methods).forEach((method) => {
|
|
38
|
-
let routePath = routerMiddleware.route.path;
|
|
39
|
-
let fullPath;
|
|
40
|
-
if (routePath.includes?.("/?(?=")) {
|
|
41
|
-
const pathMatch = routePath.match(/\/\^?(\\\/[^?]+|\/[^?]+)/);
|
|
42
|
-
if (pathMatch) {
|
|
43
|
-
const cleanPath = pathMatch[1].replace(/\\\//g, "/");
|
|
44
|
-
fullPath = basePath ? basePath + cleanPath : cleanPath;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const fallbackMatch = routePath.match(/\?\(\?=([^)]+)/);
|
|
48
|
-
if (fallbackMatch) {
|
|
49
|
-
fullPath = fallbackMatch[1];
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
fullPath = routePath;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
fullPath = basePath
|
|
58
|
-
? basePath.replace(/\/$/, "") +
|
|
59
|
-
(routePath.startsWith("/") ? routePath : "/" + routePath)
|
|
60
|
-
: routePath;
|
|
61
|
-
}
|
|
62
|
-
fullPath = fullPath
|
|
63
|
-
.replace(/\\\//g, "/")
|
|
64
|
-
.replace(/\^/g, "")
|
|
65
|
-
.replace(/\$/g, "");
|
|
66
|
-
if (fullPath.includes?.("/?(?=")) {
|
|
67
|
-
fullPath = fullPath.replace(/\/\?\(\?=[^)]*\)/g, "");
|
|
68
|
-
}
|
|
69
|
-
routes.push({
|
|
70
|
-
method: method.toUpperCase(),
|
|
71
|
-
path: fullPath,
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
return routes;
|
|
79
|
-
};
|
|
80
|
-
exports.getAppRoutes = getAppRoutes;
|
|
81
|
-
function parseAndGetPrismaQueryOptions(req) { }
|
|
82
|
-
//# sourceMappingURL=base.controller.helpers.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAppRoutes=void 0,exports.parseAndGetPrismaQueryOptions=parseAndGetPrismaQueryOptions;const server_1=require("../../../../server"),getAppRoutes=()=>{const h=(0,server_1.getExpressApp)(),a=[];return h._router.stack.forEach(t=>{if(t.route)Object.keys(t.route.methods).forEach(s=>{a.push({method:s.toUpperCase(),path:t.route.path})});else if(t.handle&&t.handle.stack){let s="";if(t.regexp){const p=t.regexp.toString();if(p.includes?.("/?(?=")){const o=p.match(/\/\^(\\\/[^?]+)/);o&&(s=o[1].replace(/\\\//g,"/"))}else{const o=p.match(/\/\^(\\\/[^\\]+)/);o&&(s=o[1].replace(/\\\//g,"/"))}}t.handle.stack.forEach(p=>{p.route&&Object.keys(p.route.methods).forEach(o=>{let c=p.route.path,e;if(c.includes?.("/?(?=")){const n=c.match(/\/\^?(\\\/[^?]+|\/[^?]+)/);if(n){const r=n[1].replace(/\\\//g,"/");e=s?s+r:r}else{const r=c.match(/\?\(\?=([^)]+)/);r?e=r[1]:e=c}}else e=s?s.replace(/\/$/,"")+(c.startsWith("/")?c:"/"+c):c;e=e.replace(/\\\//g,"/").replace(/\^/g,"").replace(/\$/g,""),e.includes?.("/?(?=")&&(e=e.replace(/\/\?\(\?=[^)]*\)/g,"")),a.push({method:o.toUpperCase(),path:e})})})}}),a};exports.getAppRoutes=getAppRoutes;function parseAndGetPrismaQueryOptions(h){}
|
|
@@ -1,50 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.resolvePrismaQueryOptions = resolvePrismaQueryOptions;
|
|
7
|
-
const deepmerge_helper_1 = __importDefault(require("../../../../utils/helpers/deepmerge.helper"));
|
|
8
|
-
function resolvePrismaQueryOptions(prismaQueryOptions, action) {
|
|
9
|
-
if (!prismaQueryOptions) {
|
|
10
|
-
return {};
|
|
11
|
-
}
|
|
12
|
-
const options = prismaQueryOptions;
|
|
13
|
-
const actionOptions = options[action] || {};
|
|
14
|
-
let mergedOptions = options.queryOptions || {};
|
|
15
|
-
if (options.global) {
|
|
16
|
-
mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, options.global);
|
|
17
|
-
}
|
|
18
|
-
const generalOptions = getGeneralOptionsForAction(options, action);
|
|
19
|
-
if (generalOptions) {
|
|
20
|
-
mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, generalOptions);
|
|
21
|
-
}
|
|
22
|
-
if (actionOptions) {
|
|
23
|
-
mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, actionOptions);
|
|
24
|
-
}
|
|
25
|
-
return mergedOptions;
|
|
26
|
-
}
|
|
27
|
-
function getGeneralOptionsForAction(options, action) {
|
|
28
|
-
const actionMappings = {
|
|
29
|
-
findMany: ["find"],
|
|
30
|
-
findOne: ["find"],
|
|
31
|
-
create: ["create", "save"],
|
|
32
|
-
createOne: ["create", "save", "saveOne"],
|
|
33
|
-
createMany: ["create", "save", "saveMany"],
|
|
34
|
-
update: ["update", "save"],
|
|
35
|
-
updateOne: ["update", "save", "saveOne"],
|
|
36
|
-
updateMany: ["update", "save", "saveMany"],
|
|
37
|
-
delete: ["delete"],
|
|
38
|
-
deleteOne: ["delete"],
|
|
39
|
-
deleteMany: ["delete"],
|
|
40
|
-
};
|
|
41
|
-
const generalKeys = actionMappings[action] || [];
|
|
42
|
-
let generalOptions = {};
|
|
43
|
-
for (const key of generalKeys) {
|
|
44
|
-
if (options[key]) {
|
|
45
|
-
generalOptions = (0, deepmerge_helper_1.default)(generalOptions, options[key]);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return Object.keys(generalOptions).length > 0 ? generalOptions : null;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=base.middlewares.helpers.js.map
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolvePrismaQueryOptions=resolvePrismaQueryOptions;const deepmerge_helper_1=__importDefault(require("../../../../utils/helpers/deepmerge.helper"));function resolvePrismaQueryOptions(t,r){if(!t)return{};const n=t,s=n[r]||{};let e=n.queryOptions||{};n.global&&(e=(0,deepmerge_helper_1.default)(e,n.global));const a=getGeneralOptionsForAction(n,r);return a&&(e=(0,deepmerge_helper_1.default)(e,a)),s&&(e=(0,deepmerge_helper_1.default)(e,s)),e}function getGeneralOptionsForAction(t,r){const s={findMany:["find"],findOne:["find"],create:["create","save"],createOne:["create","save","saveOne"],createMany:["create","save","saveMany"],update:["update","save"],updateOne:["update","save","saveOne"],updateMany:["update","save","saveMany"],delete:["delete"],deleteOne:["delete"],deleteMany:["delete"]}[r]||[];let e={};for(const a of s)t[a]&&(e=(0,deepmerge_helper_1.default)(e,t[a]));return Object.keys(e).length>0?e:null}
|
|
@@ -1,97 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.setupRouters = setupRouters;
|
|
7
|
-
exports.isEndpointDisabled = isEndpointDisabled;
|
|
8
|
-
exports.isParentEndpointAllowed = isParentEndpointAllowed;
|
|
9
|
-
const pluralize_1 = __importDefault(require("pluralize"));
|
|
10
|
-
const utils_1 = require("../../../../exports/utils");
|
|
11
|
-
const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
|
|
12
|
-
const auth_service_1 = __importDefault(require("../../../auth/auth.service"));
|
|
13
|
-
const base_controller_1 = require("../../base.controller");
|
|
14
|
-
const base_middlewares_1 = require("../../base.middlewares");
|
|
15
|
-
const routers_helpers_1 = require("../../../../utils/helpers/routers.helpers");
|
|
16
|
-
function setupRouters(models, router, arkosConfigs) {
|
|
17
|
-
return models.map(async (model) => {
|
|
18
|
-
const modelNameInKebab = (0, utils_1.kebabCase)(model);
|
|
19
|
-
const modelModules = await (0, models_helpers_1.importPrismaModelModules)(modelNameInKebab, arkosConfigs);
|
|
20
|
-
const { middlewares, authConfigs, prismaQueryOptions, router: customRouterModule, dtos, schemas, } = modelModules;
|
|
21
|
-
const routeName = pluralize_1.default.plural(modelNameInKebab);
|
|
22
|
-
const controller = new base_controller_1.BaseController(model);
|
|
23
|
-
const routerConfig = customRouterModule?.config || {};
|
|
24
|
-
const customRouter = customRouterModule || {};
|
|
25
|
-
const hasCustomImplementation = (path, method) => {
|
|
26
|
-
return customRouter.stack?.some((layer) => (layer.path === `/api/${path}` ||
|
|
27
|
-
layer.path === `api/${path}` ||
|
|
28
|
-
layer.path === `api/${path}/` ||
|
|
29
|
-
layer.path === `/api/${path}/`) &&
|
|
30
|
-
layer.method.toLowerCase() === method.toLowerCase());
|
|
31
|
-
};
|
|
32
|
-
const getValidationSchemaOrDto = (key) => {
|
|
33
|
-
const validationConfigs = arkosConfigs?.validation;
|
|
34
|
-
if (validationConfigs?.resolver === "class-validator") {
|
|
35
|
-
return dtos?.[key];
|
|
36
|
-
}
|
|
37
|
-
else if (validationConfigs?.resolver === "zod") {
|
|
38
|
-
return schemas?.[key];
|
|
39
|
-
}
|
|
40
|
-
return undefined;
|
|
41
|
-
};
|
|
42
|
-
if (customRouterModule?.default && !routerConfig?.disable)
|
|
43
|
-
router.use(`/${routeName}`, customRouterModule.default);
|
|
44
|
-
if (!isEndpointDisabled(routerConfig, "createOne") &&
|
|
45
|
-
!hasCustomImplementation(`/${routeName}`, "post")) {
|
|
46
|
-
router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateOne), controller.createOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateOne), base_middlewares_1.sendResponse);
|
|
47
|
-
}
|
|
48
|
-
if (!isEndpointDisabled(routerConfig, "findMany") &&
|
|
49
|
-
!hasCustomImplementation(`/${routeName}`, "get")) {
|
|
50
|
-
router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindMany), controller.findMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindMany), base_middlewares_1.sendResponse);
|
|
51
|
-
}
|
|
52
|
-
if (!isEndpointDisabled(routerConfig, "createMany") &&
|
|
53
|
-
!hasCustomImplementation(`/${routeName}/many`, "post")) {
|
|
54
|
-
router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateMany), controller.createMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateMany), base_middlewares_1.sendResponse);
|
|
55
|
-
}
|
|
56
|
-
if (!isEndpointDisabled(routerConfig, "updateMany") &&
|
|
57
|
-
!hasCustomImplementation(`/${routeName}/many`, "patch")) {
|
|
58
|
-
router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateMany), controller.updateMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateMany), base_middlewares_1.sendResponse);
|
|
59
|
-
}
|
|
60
|
-
if (!isEndpointDisabled(routerConfig, "deleteMany") &&
|
|
61
|
-
!hasCustomImplementation(`/${routeName}/many`, "delete")) {
|
|
62
|
-
router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("deleteMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteMany), controller.deleteMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteMany), base_middlewares_1.sendResponse);
|
|
63
|
-
}
|
|
64
|
-
if (!isEndpointDisabled(routerConfig, "findOne") &&
|
|
65
|
-
!hasCustomImplementation(`/${routeName}/:id`, "get")) {
|
|
66
|
-
router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("findOne")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindOne), controller.findOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindOne), base_middlewares_1.sendResponse);
|
|
67
|
-
}
|
|
68
|
-
if (!isEndpointDisabled(routerConfig, "updateOne") &&
|
|
69
|
-
!hasCustomImplementation(`/${routeName}/:id`, "patch")) {
|
|
70
|
-
router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateOne), controller.updateOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateOne), base_middlewares_1.sendResponse);
|
|
71
|
-
}
|
|
72
|
-
if (!isEndpointDisabled(routerConfig, "deleteOne") &&
|
|
73
|
-
!hasCustomImplementation(`/${routeName}/:id`, "delete")) {
|
|
74
|
-
router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("delete")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteOne), controller.deleteOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteOne), base_middlewares_1.sendResponse);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
function isEndpointDisabled(routerConfig, endpoint) {
|
|
79
|
-
if (!routerConfig?.disable)
|
|
80
|
-
return false;
|
|
81
|
-
if (routerConfig.disable === true)
|
|
82
|
-
return true;
|
|
83
|
-
if (typeof routerConfig.disable === "object")
|
|
84
|
-
return routerConfig.disable[endpoint] === true;
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
function isParentEndpointAllowed(routerConfig, endpoint) {
|
|
88
|
-
if (!routerConfig?.parent)
|
|
89
|
-
return false;
|
|
90
|
-
const parentEndpoints = routerConfig.parent.endpoints;
|
|
91
|
-
if (parentEndpoints === "*")
|
|
92
|
-
return true;
|
|
93
|
-
if (Array.isArray(parentEndpoints))
|
|
94
|
-
return parentEndpoints.includes(endpoint);
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=base.router.helpers.js.map
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupRouters=setupRouters,exports.isEndpointDisabled=isEndpointDisabled,exports.isParentEndpointAllowed=isParentEndpointAllowed;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../exports/utils"),models_helpers_1=require("../../../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../../../auth/auth.service")),base_controller_1=require("../../base.controller"),base_middlewares_1=require("../../base.middlewares"),routers_helpers_1=require("../../../../utils/helpers/routers.helpers");function setupRouters(n,s,p){return n.map(async y=>{const o=(0,utils_1.kebabCase)(y),M=await(0,models_helpers_1.importPrismaModelModules)(o,p),{middlewares:t,authConfigs:a,prismaQueryOptions:d,router:h,dtos:b,schemas:m}=M,e=pluralize_1.default.plural(o),i=new base_controller_1.BaseController(y),r=h?.config||{},O=h||{},l=(c,C)=>O.stack?.some(f=>(f.path===`/api/${c}`||f.path===`api/${c}`||f.path===`api/${c}/`||f.path===`/api/${c}/`)&&f.method.toLowerCase()===C.toLowerCase()),u=c=>{const C=p?.validation;if(C?.resolver==="class-validator")return b?.[c];if(C?.resolver==="zod")return m?.[c]};h?.default&&!r?.disable&&s.use(`/${e}`,h.default),!isEndpointDisabled(r,"createOne")&&!l(`/${e}`,"post")&&s.post(`/${e}`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("create")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateOne),i.createOne,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findMany")&&!l(`/${e}`,"get")&&s.get(`/${e}`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindMany),i.findMany,...(0,routers_helpers_1.processMiddleware)(t?.afterFindMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"createMany")&&!l(`/${e}/many`,"post")&&s.post(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("createMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateMany),i.createMany,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateMany")&&!l(`/${e}/many`,"patch")&&s.patch(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("updateMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateMany),i.updateMany,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteMany")&&!l(`/${e}/many`,"delete")&&s.delete(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("deleteMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteMany),i.deleteMany,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findOne")&&!l(`/${e}/:id`,"get")&&s.get(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("findOne")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindOne),i.findOne,...(0,routers_helpers_1.processMiddleware)(t?.afterFindOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateOne")&&!l(`/${e}/:id`,"patch")&&s.patch(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("update")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateOne),i.updateOne,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteOne")&&!l(`/${e}/:id`,"delete")&&s.delete(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("delete")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteOne),i.deleteOne,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteOne),base_middlewares_1.sendResponse)})}function isEndpointDisabled(n,s){return n?.disable?n.disable===!0?!0:typeof n.disable=="object"?n.disable[s]===!0:!1:!1}function isParentEndpointAllowed(n,s){if(!n?.parent)return!1;const p=n.parent.endpoints;return p==="*"?!0:Array.isArray(p)?p.includes(s):!0}
|
|
@@ -1,171 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.removeApiAction = removeApiAction;
|
|
4
|
-
exports.isPrismaRelationFormat = isPrismaRelationFormat;
|
|
5
|
-
exports.handleRelationFieldsInBody = handleRelationFieldsInBody;
|
|
6
|
-
exports.canBeUsedToConnect = canBeUsedToConnect;
|
|
7
|
-
const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
|
|
8
|
-
function removeApiAction(obj) {
|
|
9
|
-
if (!obj || typeof obj !== "object")
|
|
10
|
-
return obj;
|
|
11
|
-
const result = {};
|
|
12
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
13
|
-
if (key === "apiAction")
|
|
14
|
-
continue;
|
|
15
|
-
if (Array.isArray(value)) {
|
|
16
|
-
result[key] = value.map((item) => typeof item === "object" && item !== null ? removeApiAction(item) : item);
|
|
17
|
-
}
|
|
18
|
-
else if (typeof value === "object" && value !== null) {
|
|
19
|
-
result[key] = removeApiAction(value);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
result[key] = value;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
function isPrismaRelationFormat(obj) {
|
|
28
|
-
if (!obj || typeof obj !== "object")
|
|
29
|
-
return false;
|
|
30
|
-
const prismaOperations = [
|
|
31
|
-
"create",
|
|
32
|
-
"connect",
|
|
33
|
-
"update",
|
|
34
|
-
"delete",
|
|
35
|
-
"disconnect",
|
|
36
|
-
"deleteMany",
|
|
37
|
-
"connectOrCreate",
|
|
38
|
-
"upsert",
|
|
39
|
-
"set",
|
|
40
|
-
];
|
|
41
|
-
return prismaOperations.some((op) => op in obj);
|
|
42
|
-
}
|
|
43
|
-
function handleRelationFieldsInBody(body, relationFields, ignoreActions = []) {
|
|
44
|
-
let mutableBody = { ...body };
|
|
45
|
-
relationFields?.list?.forEach((field) => {
|
|
46
|
-
if (!body[field.name])
|
|
47
|
-
return;
|
|
48
|
-
if (isPrismaRelationFormat(body[field.name])) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (!Array.isArray(body[field.name])) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const createData = [];
|
|
55
|
-
const connectData = [];
|
|
56
|
-
const updateData = [];
|
|
57
|
-
const disconnectData = [];
|
|
58
|
-
const deleteManyIds = [];
|
|
59
|
-
body[field.name]?.forEach((bodyField) => {
|
|
60
|
-
if (ignoreActions?.includes?.(bodyField?.apiAction))
|
|
61
|
-
return;
|
|
62
|
-
const apiAction = bodyField?.apiAction;
|
|
63
|
-
if (apiAction === "delete") {
|
|
64
|
-
deleteManyIds.push(bodyField.id);
|
|
65
|
-
}
|
|
66
|
-
else if (apiAction === "disconnect") {
|
|
67
|
-
disconnectData.push({ id: bodyField.id });
|
|
68
|
-
}
|
|
69
|
-
else if (canBeUsedToConnect(field.type, bodyField)) {
|
|
70
|
-
const { apiAction: _, ...cleanedData } = bodyField;
|
|
71
|
-
connectData.push(cleanedData);
|
|
72
|
-
}
|
|
73
|
-
else if (!bodyField?.id) {
|
|
74
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
75
|
-
let dataToPush = { ...bodyField };
|
|
76
|
-
if (nestedRelations) {
|
|
77
|
-
dataToPush = handleRelationFieldsInBody(dataToPush, nestedRelations, ignoreActions);
|
|
78
|
-
}
|
|
79
|
-
if ("apiAction" in dataToPush) {
|
|
80
|
-
const { apiAction: _, ...rest } = dataToPush;
|
|
81
|
-
dataToPush = rest;
|
|
82
|
-
}
|
|
83
|
-
createData.push(dataToPush);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
const { id, apiAction: _, ...data } = bodyField;
|
|
87
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
88
|
-
let dataToPush = data;
|
|
89
|
-
if (nestedRelations) {
|
|
90
|
-
dataToPush = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
|
|
91
|
-
}
|
|
92
|
-
updateData.push({
|
|
93
|
-
where: { id },
|
|
94
|
-
data: dataToPush,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
mutableBody[field.name] = {
|
|
99
|
-
...(createData.length ? { create: createData } : {}),
|
|
100
|
-
...(connectData.length ? { connect: connectData } : {}),
|
|
101
|
-
...(updateData.length ? { update: updateData } : {}),
|
|
102
|
-
...(disconnectData.length ? { disconnect: disconnectData } : {}),
|
|
103
|
-
...(deleteManyIds.length
|
|
104
|
-
? { deleteMany: { id: { in: deleteManyIds } } }
|
|
105
|
-
: {}),
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
relationFields?.singular?.forEach((field) => {
|
|
109
|
-
if (!body[field.name])
|
|
110
|
-
return;
|
|
111
|
-
if (ignoreActions?.includes?.(body[field.name]?.apiAction))
|
|
112
|
-
return;
|
|
113
|
-
if (isPrismaRelationFormat(body[field.name])) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const relationData = body[field.name];
|
|
117
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
118
|
-
if (canBeUsedToConnect(field.type, relationData)) {
|
|
119
|
-
const { apiAction: _, ...cleanedData } = relationData;
|
|
120
|
-
mutableBody[field.name] = { connect: cleanedData };
|
|
121
|
-
}
|
|
122
|
-
else if (!relationData?.id) {
|
|
123
|
-
let dataToCreate = { ...relationData };
|
|
124
|
-
if ("apiAction" in dataToCreate) {
|
|
125
|
-
const { apiAction: _, ...rest } = dataToCreate;
|
|
126
|
-
dataToCreate = rest;
|
|
127
|
-
}
|
|
128
|
-
if (nestedRelations) {
|
|
129
|
-
dataToCreate = handleRelationFieldsInBody(dataToCreate, nestedRelations, ignoreActions);
|
|
130
|
-
}
|
|
131
|
-
mutableBody[field.name] = { create: dataToCreate };
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
const { id, apiAction: _, ...data } = relationData;
|
|
135
|
-
let dataToUpdate = data;
|
|
136
|
-
if (nestedRelations) {
|
|
137
|
-
dataToUpdate = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
|
|
138
|
-
}
|
|
139
|
-
mutableBody[field.name] = {
|
|
140
|
-
update: {
|
|
141
|
-
data: dataToUpdate,
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
if ("apiAction" in mutableBody) {
|
|
147
|
-
const { apiAction, ...rest } = mutableBody;
|
|
148
|
-
mutableBody = rest;
|
|
149
|
-
}
|
|
150
|
-
return removeApiAction(mutableBody);
|
|
151
|
-
}
|
|
152
|
-
function canBeUsedToConnect(modelName, bodyField) {
|
|
153
|
-
if (!bodyField)
|
|
154
|
-
return false;
|
|
155
|
-
if (bodyField.apiAction && !["connect"]?.includes?.(bodyField.apiAction)) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
if (bodyField.apiAction === "connect") {
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
if (Object.keys(bodyField)?.length === 1 && bodyField?.id) {
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
const uniqueFields = (0, models_helpers_1.getModelUniqueFields)(modelName);
|
|
165
|
-
if (Object.keys(bodyField).length === 1) {
|
|
166
|
-
const fieldName = Object.keys(bodyField)[0];
|
|
167
|
-
return uniqueFields?.some((field) => field.name === fieldName);
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=base.service.helpers.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeApiAction=removeApiAction,exports.isPrismaRelationFormat=isPrismaRelationFormat,exports.handleRelationFieldsInBody=handleRelationFieldsInBody,exports.canBeUsedToConnect=canBeUsedToConnect;const models_helpers_1=require("../../../../utils/helpers/models.helpers");function removeApiAction(t){if(!t||typeof t!="object")return t;const n={};for(const[s,a]of Object.entries(t))s!=="apiAction"&&(Array.isArray(a)?n[s]=a.map(e=>typeof e=="object"&&e!==null?removeApiAction(e):e):typeof a=="object"&&a!==null?n[s]=removeApiAction(a):n[s]=a);return n}function isPrismaRelationFormat(t){return!t||typeof t!="object"?!1:["create","connect","update","delete","disconnect","deleteMany","connectOrCreate","upsert","set"].some(s=>s in t)}function handleRelationFieldsInBody(t,n,s=[]){let a={...t};if(n?.list?.forEach(e=>{if(!t[e.name]||isPrismaRelationFormat(t[e.name])||!Array.isArray(t[e.name]))return;const r=[],u=[],i=[],l=[],p=[];t[e.name]?.forEach(c=>{if(s?.includes?.(c?.apiAction))return;const A=c?.apiAction;if(A==="delete")p.push(c.id);else if(A==="disconnect")l.push({id:c.id});else if(canBeUsedToConnect(e.type,c)){const{apiAction:f,...o}=c;u.push(o)}else if(c?.id){const{id:f,apiAction:o,...h}=c;let m=(0,models_helpers_1.getPrismaModelRelations)(e.type),R=h;m&&(R=handleRelationFieldsInBody(h,m,s)),i.push({where:{id:f},data:R})}else{let f=(0,models_helpers_1.getPrismaModelRelations)(e.type),o={...c};if(f&&(o=handleRelationFieldsInBody(o,f,s)),"apiAction"in o){const{apiAction:h,...m}=o;o=m}r.push(o)}}),a[e.name]={...r.length?{create:r}:{},...u.length?{connect:u}:{},...i.length?{update:i}:{},...l.length?{disconnect:l}:{},...p.length?{deleteMany:{id:{in:p}}}:{}}}),n?.singular?.forEach(e=>{if(!t[e.name]||s?.includes?.(t[e.name]?.apiAction)||isPrismaRelationFormat(t[e.name]))return;const r=t[e.name];let u=(0,models_helpers_1.getPrismaModelRelations)(e.type);if(canBeUsedToConnect(e.type,r)){const{apiAction:i,...l}=r;a[e.name]={connect:l}}else if(r?.id){const{id:i,apiAction:l,...p}=r;let c=p;u&&(c=handleRelationFieldsInBody(p,u,s)),a[e.name]={update:{data:c}}}else{let i={...r};if("apiAction"in i){const{apiAction:l,...p}=i;i=p}u&&(i=handleRelationFieldsInBody(i,u,s)),a[e.name]={create:i}}}),"apiAction"in a){const{apiAction:e,...r}=a;a=r}return removeApiAction(a)}function canBeUsedToConnect(t,n){if(!n||n.apiAction&&!["connect"].includes?.(n.apiAction))return!1;if(n.apiAction==="connect"||Object.keys(n)?.length===1&&n?.id)return!0;const s=(0,models_helpers_1.getModelUniqueFields)(t);if(Object.keys(n).length===1){const a=Object.keys(n)[0];return s?.some(e=>e.name===a)}return!1}
|