arkos 1.1.12-test → 1.1.13-test
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 -1
- package/dist/cjs/app.js.map +1 -1
- package/dist/cjs/modules/auth/auth.controller.js +53 -64
- package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
- package/dist/cjs/modules/auth/auth.router.js +46 -58
- package/dist/cjs/modules/auth/auth.router.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +75 -97
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +6 -7
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
- package/dist/cjs/modules/base/base.controller.js +30 -46
- package/dist/cjs/modules/base/base.controller.js.map +1 -1
- package/dist/cjs/modules/base/base.middlewares.js +17 -21
- package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
- package/dist/cjs/modules/base/base.router.js +6 -17
- package/dist/cjs/modules/base/base.router.js.map +1 -1
- package/dist/cjs/modules/base/base.service.js +128 -116
- package/dist/cjs/modules/base/base.service.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +3 -5
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +36 -47
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +30 -40
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
- package/dist/cjs/modules/email/email.service.js +28 -39
- package/dist/cjs/modules/email/email.service.js.map +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +6 -3
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js +3 -12
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +17 -31
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/file-uploader/file-uploader.controller.js +18 -27
- package/dist/cjs/modules/file-uploader/file-uploader.controller.js.map +1 -1
- package/dist/cjs/modules/file-uploader/file-uploader.router.js +23 -34
- package/dist/cjs/modules/file-uploader/file-uploader.router.js.map +1 -1
- package/dist/cjs/modules/file-uploader/file-uploader.service.js +117 -131
- package/dist/cjs/modules/file-uploader/file-uploader.service.js.map +1 -1
- package/dist/cjs/modules/file-uploader/utils/helpers/file-uploader.helpers.js +15 -26
- package/dist/cjs/modules/file-uploader/utils/helpers/file-uploader.helpers.js.map +1 -1
- package/dist/cjs/server.js +1 -1
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/utils/cli/build.js +9 -2
- package/dist/cjs/utils/cli/build.js.map +1 -1
- package/dist/cjs/utils/cli/dev.js +43 -48
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/start.js +35 -38
- package/dist/cjs/utils/cli/start.js.map +1 -1
- package/dist/cjs/utils/features/api.features.js +26 -33
- package/dist/cjs/utils/features/api.features.js.map +1 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +4 -6
- package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +28 -36
- package/dist/cjs/utils/helpers/change-case.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/deepmerge.helper.js +4 -8
- package/dist/cjs/utils/helpers/deepmerge.helper.js.map +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +2 -13
- package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +65 -80
- package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +23 -34
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/cjs/utils/validate-dto.js +6 -17
- package/dist/cjs/utils/validate-dto.js.map +1 -1
- package/dist/cjs/utils/validate-schema.js +6 -17
- package/dist/cjs/utils/validate-schema.js.map +1 -1
- package/dist/es2020/app.js +1 -1
- package/dist/es2020/app.js.map +1 -1
- package/dist/es2020/modules/auth/auth.controller.js +53 -64
- package/dist/es2020/modules/auth/auth.controller.js.map +1 -1
- package/dist/es2020/modules/auth/auth.router.js +46 -58
- package/dist/es2020/modules/auth/auth.router.js.map +1 -1
- package/dist/es2020/modules/auth/auth.service.js +75 -97
- package/dist/es2020/modules/auth/auth.service.js.map +1 -1
- package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +6 -7
- package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
- package/dist/es2020/modules/base/base.controller.js +30 -46
- package/dist/es2020/modules/base/base.controller.js.map +1 -1
- package/dist/es2020/modules/base/base.middlewares.js +17 -21
- package/dist/es2020/modules/base/base.middlewares.js.map +1 -1
- package/dist/es2020/modules/base/base.router.js +6 -17
- package/dist/es2020/modules/base/base.router.js.map +1 -1
- package/dist/es2020/modules/base/base.service.js +128 -116
- package/dist/es2020/modules/base/base.service.js.map +1 -1
- package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js +3 -5
- package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
- package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +36 -47
- package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +30 -40
- package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
- package/dist/es2020/modules/email/email.service.js +28 -39
- package/dist/es2020/modules/email/email.service.js.map +1 -1
- package/dist/es2020/modules/error-handler/error-handler.controller.js +6 -3
- package/dist/es2020/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/es2020/modules/error-handler/utils/catch-async.js +3 -12
- package/dist/es2020/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js +17 -31
- package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/es2020/modules/file-uploader/file-uploader.controller.js +18 -27
- package/dist/es2020/modules/file-uploader/file-uploader.controller.js.map +1 -1
- package/dist/es2020/modules/file-uploader/file-uploader.router.js +23 -34
- package/dist/es2020/modules/file-uploader/file-uploader.router.js.map +1 -1
- package/dist/es2020/modules/file-uploader/file-uploader.service.js +117 -131
- package/dist/es2020/modules/file-uploader/file-uploader.service.js.map +1 -1
- package/dist/es2020/modules/file-uploader/utils/helpers/file-uploader.helpers.js +15 -26
- package/dist/es2020/modules/file-uploader/utils/helpers/file-uploader.helpers.js.map +1 -1
- package/dist/es2020/server.js +1 -1
- package/dist/es2020/server.js.map +1 -1
- package/dist/es2020/utils/cli/build.js +9 -2
- package/dist/es2020/utils/cli/build.js.map +1 -1
- package/dist/es2020/utils/cli/dev.js +43 -48
- package/dist/es2020/utils/cli/dev.js.map +1 -1
- package/dist/es2020/utils/cli/start.js +35 -38
- package/dist/es2020/utils/cli/start.js.map +1 -1
- package/dist/es2020/utils/features/api.features.js +26 -33
- package/dist/es2020/utils/features/api.features.js.map +1 -1
- package/dist/es2020/utils/helpers/api.features.helpers.js +4 -6
- package/dist/es2020/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/change-case.helpers.js +28 -36
- package/dist/es2020/utils/helpers/change-case.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/deepmerge.helper.js +4 -8
- package/dist/es2020/utils/helpers/deepmerge.helper.js.map +1 -1
- package/dist/es2020/utils/helpers/global.helpers.js +2 -13
- package/dist/es2020/utils/helpers/global.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/models.helpers.js +65 -80
- package/dist/es2020/utils/helpers/models.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/prisma.helpers.js +23 -34
- package/dist/es2020/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/es2020/utils/validate-dto.js +6 -17
- package/dist/es2020/utils/validate-dto.js.map +1 -1
- package/dist/es2020/utils/validate-schema.js +6 -17
- package/dist/es2020/utils/validate-schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.service.js","sourceRoot":"","sources":["../../../../src/modules/base/base.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport {\n getModels,\n getPrismaModelRelations,\n RelationFields,\n} from \"../../utils/helpers/models.helpers\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport pluralize from \"pluralize\";\nimport { handleRelationFieldsInBody } from \"./utils/helpers/base.service.helpers\";\nimport { getPrismaInstance } from \"../../utils/helpers/prisma.helpers\";\nimport authService from \"../auth/auth.service\";\n\n/**\n * Base service class for handling CRUD operations on a specific model.\n * This class provides standard implementation of data operations that can be extended\n * by model-specific service classes.\n *\n * @class BaseService\n */\nexport class BaseService {\n /**\n * The camelCase name of the model\n * @public\n */\n modelName: string;\n\n /**\n * Object containing singular and list relation fields for the model\n * @public\n */\n relationFields: RelationFields;\n\n /**\n * Map of singular relation fields to include in queries\n * @public\n */\n singularRelationFieldToInclude: Record<string, boolean>;\n\n /**\n * Map of list relation fields to include in queries\n * @public\n */\n listRelationFieldToInclude: Record<string, boolean>;\n\n /**\n * Instance of the Prisma client\n * @public\n */\n prisma: any;\n\n /**\n * Creates an instance of BaseService.\n * @param {string} modelName - The name of the model to perform operations on.\n */\n constructor(modelName: string) {\n this.modelName = camelCase(modelName);\n this.relationFields = getPrismaModelRelations(pascalCase(modelName))!;\n this.singularRelationFieldToInclude = this.relationFields?.singular?.reduce(\n (acc: Record<string, boolean>, curr) => {\n acc[curr.name] = true;\n return acc;\n },\n {}\n );\n this.listRelationFieldToInclude = this.relationFields?.list?.reduce(\n (acc: Record<string, boolean>, curr) => {\n acc[curr.name] = true;\n return acc;\n },\n {}\n );\n }\n /**\n * Creates a single record in the database.\n *\n * @param {Record<string, any>} body - The data to create the record with.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The created record.\n */\n async createOne(\n body: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n if (kebabCase(this.modelName) === \"user\" && body.password) {\n body.password = await authService.hashPassword(body.password);\n }\n\n const prisma = getPrismaInstance();\n\n const bodyWithRelationFieldsHandled = handleRelationFieldsInBody(\n body,\n {\n ...this.relationFields,\n },\n [\"delete\", \"disconnect\", \"update\"]\n );\n\n return await prisma[this.modelName].create(\n deepmerge(\n {\n data: bodyWithRelationFieldsHandled,\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n }\n\n /**\n * Creates multiple records in the database.\n *\n * @param {Record<string, any>[]} body - An array of data to create records with.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the created data.\n * @throws {AppError} Throws an error if the data array is invalid or empty.\n */\n async createMany(\n body: Record<string, any>[]\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!Array.isArray(body) || body.length === 0) {\n throw new AppError(\n \"Invalid or empty data array provided for creation.\",\n 400\n );\n }\n\n const [data, total] = await Promise.all([\n prisma[this.modelName].createMany({\n data: body,\n }),\n prisma[this.modelName].count(),\n ]);\n\n return { total, data };\n }\n\n /**\n * Finds multiple records based on provided filters.\n *\n * @param {Record<string, any>} filters - The filters to apply to the query.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the found data.\n */\n async findMany(\n filters: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n const [data, total] = await Promise.all([\n prisma[this.modelName].findMany(\n \"select\" in filters\n ? deepmerge(\n { ...filters },\n {\n select: this.singularRelationFieldToInclude,\n }\n )\n : deepmerge(\n { ...filters },\n {\n include: this.singularRelationFieldToInclude,\n }\n )\n ),\n prisma[this.modelName].count({\n where: filters.where,\n }),\n ]);\n\n return { total, data };\n }\n\n /**\n * Finds a single record by its parameters.\n *\n * @param {Record<string, any>} filters - The parameters to find the record by.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The found record.\n * @throws {AppError} Throws an error if the record is not found.\n */\n async findOne(\n filters: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n const prisma = getPrismaInstance();\n\n const data = await prisma[this.modelName].findFirst(\n deepmerge(\n {\n where: { ...filters },\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n\n if (!data && Object.keys(filters).length === 1 && \"id\" in filters)\n throw new AppError(\n `${pascalCase(String(this.modelName))} with ID ${filters.id} not found`,\n 404,\n {},\n \"not_found\"\n );\n else if (!data)\n throw new AppError(\n `${pascalCase(String(this.modelName))} not found`,\n 404,\n {},\n \"not_found\"\n );\n\n return data;\n }\n\n /**\n * Updates a single record by its ID.\n *\n * @param {Record<string, any>} filters - The parameters to find the record by.\n * @param {Record<string, any>} body - The data to update the record with.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The updated record.\n * @throws {AppError} Throws an error if the record is not found.\n */\n async updateOne(\n filters: Record<string, any>,\n body: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n const prisma = getPrismaInstance();\n\n if (kebabCase(this.modelName) === \"user\" && body.password) {\n body.password = await authService.hashPassword(body.password);\n }\n\n const bodyWithRelationFieldsHandled = handleRelationFieldsInBody(body, {\n ...this.relationFields,\n });\n\n const data = await prisma[this.modelName].update(\n deepmerge(\n {\n where: { ...filters },\n data: bodyWithRelationFieldsHandled,\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n\n if (!data && Object.keys(filters).length === 1 && \"id\" in filters)\n throw new AppError(\n `${pascalCase(String(this.modelName))} with ID ${filters.id} not found`,\n 404,\n {},\n \"not_found\"\n );\n else if (!data)\n throw new AppError(\n `${pascalCase(String(this.modelName))} not found`,\n 404,\n {},\n \"not_found\"\n );\n\n return data;\n }\n\n /**\n * Updates multiple records based on the provided filter and data.\n *\n * @param {Record<string, any>} filters - The filters to identify records to update.\n * @param {Record<string, any>} body - The data to update the records with.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the updated data.\n * @throws {AppError} Throws an error if no records match the filters.\n */\n async updateMany(\n filters: Record<string, any>,\n body: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!filters || typeof filters !== \"object\") {\n throw new AppError(\"Invalid filters provided for udpate many.\", 400);\n }\n\n const data = await prisma[this.modelName].updateMany({\n ...filters,\n data: body,\n });\n\n if (!data || data.count === 0) {\n throw new AppError(\n `${pluralize(pascalCase(String(this.modelName)))} not found`,\n 404\n );\n }\n\n const total = await prisma[this.modelName].count();\n return { total, data };\n }\n\n /**\n * Deletes a single record by its ID.\n *\n * @param {Record<string, any>} params - The parameters to find the record by.\n * @returns {Promise<any>} The deleted record.\n */\n async deleteOne(params: Record<string, any>): Promise<any> {\n const prisma = getPrismaInstance();\n\n return await prisma[this.modelName].delete({\n where: {\n ...params,\n id: String(params.id),\n },\n });\n }\n\n /**\n * Deletes multiple records based on the provided filter.\n *\n * @param {Record<string, any>} filter - The filter to identify records to delete.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the deleted data.\n * @throws {AppError} Throws an error if no records match the filter.\n */\n async deleteMany(\n filters: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!filters || typeof filters !== \"object\") {\n throw new AppError(\"Invalid filters provided for deletion.\", 400);\n }\n\n const data = await prisma[this.modelName].deleteMany(filters);\n\n if (!data || data.count === 0) {\n throw new AppError(`No records found to delete`, 404);\n }\n\n const total = await prisma[this.modelName].count();\n return { total, data };\n }\n}\n\n/**\n * Generates a set of base service instances for all available models.\n *\n * @returns {Record<string, BaseService>} A dictionary of base service instances, keyed by model name.\n */\nexport function getBaseServices(): Record<string, BaseService> {\n const models = getModels();\n const baseServices: Record<string, BaseService> = {};\n models.forEach((model) => {\n baseServices[`${camelCase(model)}`] = new BaseService(model);\n });\n return baseServices;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base.service.js","sourceRoot":"","sources":["../../../../src/modules/base/base.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport {\n getModels,\n getPrismaModelRelations,\n RelationFields,\n} from \"../../utils/helpers/models.helpers\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport AppError from \"../error-handler/utils/app-error\";\nimport pluralize from \"pluralize\";\nimport { handleRelationFieldsInBody } from \"./utils/helpers/base.service.helpers\";\nimport { getPrismaInstance } from \"../../utils/helpers/prisma.helpers\";\nimport authService from \"../auth/auth.service\";\n\n/**\n * Base service class for handling CRUD operations on a specific model.\n * This class provides standard implementation of data operations that can be extended\n * by model-specific service classes.\n *\n * @class BaseService\n */\nexport class BaseService {\n /**\n * The camelCase name of the model\n * @public\n */\n modelName: string;\n\n /**\n * Object containing singular and list relation fields for the model\n * @public\n */\n relationFields: RelationFields;\n\n /**\n * Map of singular relation fields to include in queries\n * @public\n */\n singularRelationFieldToInclude: Record<string, boolean>;\n\n /**\n * Map of list relation fields to include in queries\n * @public\n */\n listRelationFieldToInclude: Record<string, boolean>;\n\n /**\n * Instance of the Prisma client\n * @public\n */\n prisma: any;\n\n /**\n * Creates an instance of BaseService.\n * @param {string} modelName - The name of the model to perform operations on.\n */\n constructor(modelName: string) {\n this.modelName = camelCase(modelName);\n this.relationFields = getPrismaModelRelations(pascalCase(modelName))!;\n this.singularRelationFieldToInclude = this.relationFields?.singular?.reduce(\n (acc: Record<string, boolean>, curr) => {\n acc[curr.name] = true;\n return acc;\n },\n {}\n );\n this.listRelationFieldToInclude = this.relationFields?.list?.reduce(\n (acc: Record<string, boolean>, curr) => {\n acc[curr.name] = true;\n return acc;\n },\n {}\n );\n }\n /**\n * Creates a single record in the database.\n *\n * @param {Record<string, any>} body - The data to create the record with.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The created record.\n */\n async createOne(\n body: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n if (kebabCase(this.modelName) === \"user\" && body.password) {\n body.password = await authService.hashPassword(body.password);\n }\n\n const prisma = getPrismaInstance();\n\n const bodyWithRelationFieldsHandled = handleRelationFieldsInBody(\n body,\n {\n ...this.relationFields,\n },\n [\"delete\", \"disconnect\", \"update\"]\n );\n\n return await prisma[this.modelName].create(\n deepmerge(\n {\n data: bodyWithRelationFieldsHandled,\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n }\n\n /**\n * Creates multiple records in the database.\n *\n * @param {Record<string, any>[]} body - An array of data to create records with.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the created data.\n * @throws {AppError} Throws an error if the data array is invalid or empty.\n */\n async createMany(\n body: Record<string, any>[]\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!Array.isArray(body) || body.length === 0) {\n throw new AppError(\n \"Invalid or empty data array provided for creation.\",\n 400\n );\n }\n\n const [data, total] = await Promise.all([\n prisma[this.modelName].createMany({\n data: body,\n }),\n prisma[this.modelName].count(),\n ]);\n\n return { total, data };\n }\n\n /**\n * Finds multiple records based on provided filters.\n *\n * @param {Record<string, any>} filters - The filters to apply to the query.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the found data.\n */\n async findMany(\n filters: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n const [data, total] = await Promise.all([\n prisma[this.modelName].findMany(\n \"select\" in filters\n ? deepmerge(\n { ...filters },\n {\n select: this.singularRelationFieldToInclude,\n }\n )\n : deepmerge(\n { ...filters },\n {\n include: this.singularRelationFieldToInclude,\n }\n )\n ),\n prisma[this.modelName].count({\n where: filters.where,\n }),\n ]);\n\n return { total, data };\n }\n\n /**\n * Finds a single record by its parameters.\n *\n * @param {Record<string, any>} filters - The parameters to find the record by.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The found record.\n * @throws {AppError} Throws an error if the record is not found.\n */\n async findOne(\n filters: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n const prisma = getPrismaInstance();\n\n const data = await prisma[this.modelName].findFirst(\n deepmerge(\n {\n where: { ...filters },\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n\n if (!data && Object.keys(filters).length === 1 && \"id\" in filters)\n throw new AppError(\n `${pascalCase(String(this.modelName))} with ID ${filters.id} not found`,\n 404,\n {},\n \"not_found\"\n );\n else if (!data)\n throw new AppError(\n `${pascalCase(String(this.modelName))} not found`,\n 404,\n {},\n \"not_found\"\n );\n\n return data;\n }\n\n /**\n * Updates a single record by its ID.\n *\n * @param {Record<string, any>} filters - The parameters to find the record by.\n * @param {Record<string, any>} body - The data to update the record with.\n * @param {string} [queryOptions] - Additional query options to modify the Prisma query.\n * @returns {Promise<any>} The updated record.\n * @throws {AppError} Throws an error if the record is not found.\n */\n async updateOne(\n filters: Record<string, any>,\n body: Record<string, any>,\n queryOptions: string = \"{}\"\n ): Promise<any> {\n const prisma = getPrismaInstance();\n\n if (kebabCase(this.modelName) === \"user\" && body.password) {\n body.password = await authService.hashPassword(body.password);\n }\n\n const bodyWithRelationFieldsHandled = handleRelationFieldsInBody(body, {\n ...this.relationFields,\n });\n\n const data = await prisma[this.modelName].update(\n deepmerge(\n {\n where: { ...filters },\n data: bodyWithRelationFieldsHandled,\n ...(JSON.parse(queryOptions || \"{}\").hasOwnProperty(\"select\")\n ? {\n select: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }\n : {\n include: {\n ...this.singularRelationFieldToInclude,\n ...this.listRelationFieldToInclude,\n },\n }),\n },\n JSON.parse(queryOptions || \"{}\")\n )\n );\n\n if (!data && Object.keys(filters).length === 1 && \"id\" in filters)\n throw new AppError(\n `${pascalCase(String(this.modelName))} with ID ${filters.id} not found`,\n 404,\n {},\n \"not_found\"\n );\n else if (!data)\n throw new AppError(\n `${pascalCase(String(this.modelName))} not found`,\n 404,\n {},\n \"not_found\"\n );\n\n return data;\n }\n\n /**\n * Updates multiple records based on the provided filter and data.\n *\n * @param {Record<string, any>} filters - The filters to identify records to update.\n * @param {Record<string, any>} body - The data to update the records with.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the updated data.\n * @throws {AppError} Throws an error if no records match the filters.\n */\n async updateMany(\n filters: Record<string, any>,\n body: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!filters || typeof filters !== \"object\") {\n throw new AppError(\"Invalid filters provided for udpate many.\", 400);\n }\n\n const data = await prisma[this.modelName].updateMany({\n ...filters,\n data: body,\n });\n\n if (!data || data.count === 0) {\n throw new AppError(\n `${pluralize(pascalCase(String(this.modelName)))} not found`,\n 404\n );\n }\n\n const total = await prisma[this.modelName].count();\n return { total, data };\n }\n\n /**\n * Deletes a single record by its ID.\n *\n * @param {Record<string, any>} params - The parameters to find the record by.\n * @returns {Promise<any>} The deleted record.\n */\n async deleteOne(params: Record<string, any>): Promise<any> {\n const prisma = getPrismaInstance();\n\n return await prisma[this.modelName].delete({\n where: {\n ...params,\n id: String(params.id),\n },\n });\n }\n\n /**\n * Deletes multiple records based on the provided filter.\n *\n * @param {Record<string, any>} filter - The filter to identify records to delete.\n * @returns {Promise<{ total: number; data: any }>} The result containing the total count and the deleted data.\n * @throws {AppError} Throws an error if no records match the filter.\n */\n async deleteMany(\n filters: Record<string, any>\n ): Promise<{ total: number; data: any }> {\n const prisma = getPrismaInstance();\n\n if (!filters || typeof filters !== \"object\") {\n throw new AppError(\"Invalid filters provided for deletion.\", 400);\n }\n\n const data = await prisma[this.modelName].deleteMany(filters);\n\n if (!data || data.count === 0) {\n throw new AppError(`No records found to delete`, 404);\n }\n\n const total = await prisma[this.modelName].count();\n return { total, data };\n }\n}\n\n/**\n * Generates a set of base service instances for all available models.\n *\n * @returns {Record<string, BaseService>} A dictionary of base service instances, keyed by model name.\n */\nexport function getBaseServices(): Record<string, BaseService> {\n const models = getModels();\n const baseServices: Record<string, BaseService> = {};\n models.forEach((model) => {\n baseServices[`${camelCase(model)}`] = new BaseService(model);\n });\n return baseServices;\n}\n"]}
|
|
@@ -6,7 +6,6 @@ const getAppRoutes = () => {
|
|
|
6
6
|
const app = (0, server_1.getExpressApp)();
|
|
7
7
|
const routes = [];
|
|
8
8
|
app._router.stack.forEach((middleware) => {
|
|
9
|
-
var _a;
|
|
10
9
|
if (middleware.route) {
|
|
11
10
|
Object.keys(middleware.route.methods).forEach((method) => {
|
|
12
11
|
routes.push({
|
|
@@ -19,7 +18,7 @@ const getAppRoutes = () => {
|
|
|
19
18
|
let basePath = "";
|
|
20
19
|
if (middleware.regexp) {
|
|
21
20
|
const regexpStr = middleware.regexp.toString();
|
|
22
|
-
if (
|
|
21
|
+
if (regexpStr.includes?.("/?(?=")) {
|
|
23
22
|
const match = regexpStr.match(/\/\^(\\\/[^?]+)/);
|
|
24
23
|
if (match) {
|
|
25
24
|
basePath = match[1].replace(/\\\//g, "/");
|
|
@@ -35,10 +34,9 @@ const getAppRoutes = () => {
|
|
|
35
34
|
middleware.handle.stack.forEach((routerMiddleware) => {
|
|
36
35
|
if (routerMiddleware.route) {
|
|
37
36
|
Object.keys(routerMiddleware.route.methods).forEach((method) => {
|
|
38
|
-
var _a, _b;
|
|
39
37
|
let routePath = routerMiddleware.route.path;
|
|
40
38
|
let fullPath;
|
|
41
|
-
if (
|
|
39
|
+
if (routePath.includes?.("/?(?=")) {
|
|
42
40
|
const pathMatch = routePath.match(/\/\^?(\\\/[^?]+|\/[^?]+)/);
|
|
43
41
|
if (pathMatch) {
|
|
44
42
|
const cleanPath = pathMatch[1].replace(/\\\//g, "/");
|
|
@@ -64,7 +62,7 @@ const getAppRoutes = () => {
|
|
|
64
62
|
.replace(/\\\//g, "/")
|
|
65
63
|
.replace(/\^/g, "")
|
|
66
64
|
.replace(/\$/g, "");
|
|
67
|
-
if (
|
|
65
|
+
if (fullPath.includes?.("/?(?=")) {
|
|
68
66
|
fullPath = fullPath.replace(/\/\?\(\?=[^)]*\)/g, "");
|
|
69
67
|
}
|
|
70
68
|
routes.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.controller.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.controller.helpers.ts"],"names":[],"mappings":";;;AAAA,+CAAmD;AAE5C,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,GAAG,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"base.controller.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.controller.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { getExpressApp } from \"../../../../server\";\n\nexport const getAppRoutes = () => {\n const app = getExpressApp();\n const routes: { method: string; path: string }[] = [];\n\n app._router.stack.forEach((middleware: any) => {\n if (middleware.route) {\n // Direct routes on the app\n Object.keys(middleware.route.methods).forEach((method) => {\n routes.push({\n method: method.toUpperCase(),\n path: middleware.route.path,\n });\n });\n } else if (middleware.handle && middleware.handle.stack) {\n // Extract the base path from the middleware's regexp pattern\n let basePath = \"\";\n if (middleware.regexp) {\n // Handle pattern like /^\\/api\\/?(?=\\/|$)/i\n const regexpStr = middleware.regexp.toString();\n\n // More robust pattern matching\n if (regexpStr.includes?.(\"/?(?=\")) {\n // Extract everything between the start and the '/?(?=' pattern\n const match = regexpStr.match(/\\/\\^(\\\\\\/[^?]+)/);\n if (match) {\n // Clean up the extracted path\n basePath = match[1].replace(/\\\\\\//g, \"/\");\n }\n } else {\n // Handle other regexp patterns\n const simpleMatch = regexpStr.match(/\\/\\^(\\\\\\/[^\\\\]+)/);\n if (simpleMatch) {\n basePath = simpleMatch[1].replace(/\\\\\\//g, \"/\");\n }\n }\n }\n\n // Process routes in the middleware's router\n middleware.handle.stack.forEach((routerMiddleware: any) => {\n if (routerMiddleware.route) {\n Object.keys(routerMiddleware.route.methods).forEach((method) => {\n let routePath = routerMiddleware.route.path;\n let fullPath;\n\n // Check if routePath already contains regex artifacts\n if (routePath.includes?.(\"/?(?=\")) {\n // Extract the actual path from the regex pattern\n const pathMatch = routePath.match(/\\/\\^?(\\\\\\/[^?]+|\\/[^?]+)/);\n if (pathMatch) {\n const cleanPath = pathMatch[1].replace(/\\\\\\//g, \"/\");\n fullPath = basePath ? basePath + cleanPath : cleanPath;\n } else {\n // If we can't clean it, at least extract what's after '/?(?='\n const fallbackMatch = routePath.match(/\\?\\(\\?=([^)]+)/);\n if (fallbackMatch) {\n fullPath = fallbackMatch[1];\n } else {\n fullPath = routePath; // Use as is if no pattern matches\n }\n }\n } else {\n // Normal path joining\n fullPath = basePath\n ? basePath.replace(/\\/$/, \"\") +\n (routePath.startsWith(\"/\") ? routePath : \"/\" + routePath)\n : routePath;\n }\n\n // Clean up any remaining regex artifacts\n fullPath = fullPath\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\^/g, \"\")\n .replace(/\\$/g, \"\");\n\n // Remove any \"/?(?=\" patterns that might remain\n if (fullPath.includes?.(\"/?(?=\")) {\n fullPath = fullPath.replace(/\\/\\?\\(\\?=[^)]*\\)/g, \"\");\n }\n\n routes.push({\n method: method.toUpperCase(),\n path: fullPath,\n });\n });\n }\n });\n }\n });\n\n return routes;\n};\n"]}
|
|
@@ -32,15 +32,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
37
|
};
|
|
@@ -53,20 +44,18 @@ const auth_service_1 = __importDefault(require("../../../auth/auth.service"));
|
|
|
53
44
|
const base_controller_1 = require("../../base.controller");
|
|
54
45
|
const base_middlewares_1 = require("../../base.middlewares");
|
|
55
46
|
function setupRouters(models, router, arkosConfigs) {
|
|
56
|
-
return models.map((model) =>
|
|
57
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
47
|
+
return models.map(async (model) => {
|
|
58
48
|
const modelNameInKebab = (0, utils_1.kebabCase)(model);
|
|
59
|
-
const modelModules =
|
|
49
|
+
const modelModules = await (0, models_helpers_1.importPrismaModelModules)(modelNameInKebab);
|
|
60
50
|
const { middlewares, authConfigs, prismaQueryOptions, router: customRouterModule, dtos, schemas, } = modelModules;
|
|
61
51
|
const routeName = pluralize_1.default.plural(modelNameInKebab);
|
|
62
52
|
const controller = new base_controller_1.BaseController(model);
|
|
63
|
-
const routerConfig = customRouterModule
|
|
64
|
-
const disableConfig =
|
|
53
|
+
const routerConfig = customRouterModule?.config;
|
|
54
|
+
const disableConfig = routerConfig?.disable || {};
|
|
65
55
|
const isCompletelyDisabled = disableConfig === true;
|
|
66
|
-
const customRouter =
|
|
56
|
+
const customRouter = customRouterModule?.default || {};
|
|
67
57
|
const hasCustomImplementation = (path, method) => {
|
|
68
|
-
|
|
69
|
-
return (_a = customRouter.stack) === null || _a === void 0 ? void 0 : _a.some((layer) => layer.path === `/api/${path}` &&
|
|
58
|
+
return customRouter.stack?.some((layer) => layer.path === `/api/${path}` &&
|
|
70
59
|
layer.method.toLowerCase() === method.toLowerCase());
|
|
71
60
|
};
|
|
72
61
|
const isEndpointDisabled = (endpoint) => {
|
|
@@ -75,79 +64,79 @@ function setupRouters(models, router, arkosConfigs) {
|
|
|
75
64
|
return typeof disableConfig === "object" && !!disableConfig[endpoint];
|
|
76
65
|
};
|
|
77
66
|
const getValidationSchemaOrDto = (key) => {
|
|
78
|
-
const validationConfigs = arkosConfigs
|
|
79
|
-
if (
|
|
80
|
-
return dtos
|
|
67
|
+
const validationConfigs = arkosConfigs?.validation;
|
|
68
|
+
if (validationConfigs?.resolver === "class-validator") {
|
|
69
|
+
return dtos?.[key];
|
|
81
70
|
}
|
|
82
|
-
else if (
|
|
83
|
-
return schemas
|
|
71
|
+
else if (validationConfigs?.resolver === "zod") {
|
|
72
|
+
return schemas?.[key];
|
|
84
73
|
}
|
|
85
74
|
return undefined;
|
|
86
75
|
};
|
|
87
76
|
if (!isEndpointDisabled("createOne") &&
|
|
88
77
|
!hasCustomImplementation(`/${routeName}`, "post")) {
|
|
89
|
-
router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs
|
|
78
|
+
router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "createOne"), middlewares?.beforeCreateOne ?? controller.createOne, middlewares?.beforeCreateOne
|
|
90
79
|
? controller.createOne
|
|
91
|
-
:
|
|
92
|
-
? middlewares
|
|
80
|
+
: middlewares?.afterCreateOne ?? base_middlewares_1.sendResponse, middlewares?.beforeCreateOne && middlewares?.afterCreateOne
|
|
81
|
+
? middlewares?.afterCreateOne
|
|
93
82
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
94
83
|
}
|
|
95
84
|
if (!isEndpointDisabled("findMany") &&
|
|
96
85
|
!hasCustomImplementation(`/${routeName}`, "get")) {
|
|
97
|
-
router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs
|
|
86
|
+
router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "findMany"), middlewares?.beforeFindMany ?? controller.findMany, middlewares?.beforeFindMany
|
|
98
87
|
? controller.findMany
|
|
99
|
-
:
|
|
100
|
-
? middlewares
|
|
88
|
+
: middlewares?.afterFindMany ?? base_middlewares_1.sendResponse, middlewares?.beforeFindMany && middlewares?.afterFindMany
|
|
89
|
+
? middlewares?.afterFindMany
|
|
101
90
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
102
91
|
}
|
|
103
92
|
if (!isEndpointDisabled("createMany") &&
|
|
104
93
|
!hasCustomImplementation(`/${routeName}/many`, "post")) {
|
|
105
|
-
router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs
|
|
94
|
+
router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "createMany"), middlewares?.beforeCreateMany ?? controller.createMany, middlewares?.beforeCreateMany
|
|
106
95
|
? controller.createMany
|
|
107
|
-
:
|
|
108
|
-
? middlewares
|
|
96
|
+
: middlewares?.afterCreateMany ?? base_middlewares_1.sendResponse, middlewares?.beforeCreateMany && middlewares?.afterCreateMany
|
|
97
|
+
? middlewares?.afterCreateMany
|
|
109
98
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
110
99
|
}
|
|
111
100
|
if (!isEndpointDisabled("updateMany") &&
|
|
112
101
|
!hasCustomImplementation(`/${routeName}/many`, "patch")) {
|
|
113
|
-
router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs
|
|
102
|
+
router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "updateMany"), middlewares?.beforeUpdateMany ?? controller.updateMany, middlewares?.beforeUpdateMany
|
|
114
103
|
? controller.updateMany
|
|
115
|
-
:
|
|
116
|
-
? middlewares
|
|
104
|
+
: middlewares?.afterUpdateMany ?? base_middlewares_1.sendResponse, middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany
|
|
105
|
+
? middlewares?.afterUpdateMany
|
|
117
106
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
118
107
|
}
|
|
119
108
|
if (!isEndpointDisabled("deleteMany") &&
|
|
120
109
|
!hasCustomImplementation(`/${routeName}/many`, "delete")) {
|
|
121
|
-
router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs
|
|
110
|
+
router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("deleteMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "deleteMany"), middlewares?.beforeDeleteMany ?? controller.deleteMany, middlewares?.beforeDeleteMany
|
|
122
111
|
? controller.deleteMany
|
|
123
|
-
:
|
|
124
|
-
? middlewares
|
|
112
|
+
: middlewares?.afterDeleteMany ?? base_middlewares_1.sendResponse, middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany
|
|
113
|
+
? middlewares?.afterDeleteMany
|
|
125
114
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
126
115
|
}
|
|
127
116
|
if (!isEndpointDisabled("findOne") &&
|
|
128
117
|
!hasCustomImplementation(`/${routeName}/:id`, "get")) {
|
|
129
|
-
router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs
|
|
118
|
+
router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("findOne")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "findOne"), middlewares?.beforeFindOne ?? controller.findOne, middlewares?.beforeFindOne
|
|
130
119
|
? controller.findOne
|
|
131
|
-
:
|
|
132
|
-
? middlewares
|
|
120
|
+
: middlewares?.afterFindOne ?? base_middlewares_1.sendResponse, middlewares?.beforeFindOne && middlewares?.afterFindOne
|
|
121
|
+
? middlewares?.afterFindOne
|
|
133
122
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
134
123
|
}
|
|
135
124
|
if (!isEndpointDisabled("updateOne") &&
|
|
136
125
|
!hasCustomImplementation(`/${routeName}/:id`, "patch")) {
|
|
137
|
-
router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs
|
|
126
|
+
router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "updateOne"), middlewares?.beforeUpdateOne ?? controller.updateOne, middlewares?.beforeUpdateOne
|
|
138
127
|
? controller.updateOne
|
|
139
|
-
:
|
|
140
|
-
? middlewares
|
|
128
|
+
: middlewares?.afterUpdateOne ?? base_middlewares_1.sendResponse, middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne
|
|
129
|
+
? middlewares?.afterUpdateOne
|
|
141
130
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
142
131
|
}
|
|
143
132
|
if (!isEndpointDisabled("deleteOne") &&
|
|
144
133
|
!hasCustomImplementation(`/${routeName}/:id`, "delete")) {
|
|
145
|
-
router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs
|
|
134
|
+
router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)((0, pluralize_1.singular)(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("delete")), (0, base_middlewares_1.addPrismaQueryOptionsToRequestQuery)(prismaQueryOptions, "deleteOne"), middlewares?.beforeDeleteOne ?? controller.deleteOne, middlewares?.beforeDeleteOne
|
|
146
135
|
? controller.deleteOne
|
|
147
|
-
:
|
|
148
|
-
? middlewares
|
|
136
|
+
: middlewares?.afterDeleteOne ?? base_middlewares_1.sendResponse, middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne
|
|
137
|
+
? middlewares?.afterDeleteOne
|
|
149
138
|
: base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
|
|
150
139
|
}
|
|
151
|
-
})
|
|
140
|
+
});
|
|
152
141
|
}
|
|
153
142
|
//# sourceMappingURL=base.router.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize, { singular } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequestQuery,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // Create individual routes instead of chaining\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne ?? controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne ?? sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany ?? controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany ?? sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany ?? controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany ?? sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany ?? controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany ?? sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany ?? controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany ?? sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne ?? controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne ?? sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne ?? controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne ?? sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne ?? controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne ?? sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n });\n\n // // If the custom router has its own routes, add them\n // if (customRouterModule?.default) {\n // customRouter.stack.forEach((stack) => {\n // const { method, path, handle } = stack;\n // (router as any)[method.toLowerCase()](path, handle);\n // });\n // }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize, { singular } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequestQuery,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // Create individual routes instead of chaining\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne ?? controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne ?? sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany ?? controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany ?? sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany ?? controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany ?? sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany ?? controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany ?? sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany ?? controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany ?? sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne ?? controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne ?? sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne ?? controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne ?? sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequestQuery<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne ?? controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne ?? sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n });\n\n // // If the custom router has its own routes, add them\n // if (customRouterModule?.default) {\n // customRouter.stack.forEach((stack) => {\n // const { method, path, handle } = stack;\n // (router as any)[method.toLowerCase()](path, handle);\n // });\n // }\n}\n"]}
|