From 54569642e56745da1c50ed1cfcf0d5a44397859d Mon Sep 17 00:00:00 2001 From: Pau Date: Sun, 6 Apr 2025 18:37:28 +0200 Subject: [PATCH] small fix regarding error handling while modifying and user --- src/models/authorization/endpointsModel.js | 9 ++++++- src/models/authorization/permissionsModel.js | 10 +++++++- src/models/authorization/roleModel.js | 9 ++++++- .../roles_has_permissionsModel.js | 24 +++++++++++++++---- src/models/authorization/userModel.js | 18 ++++++++------ 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/src/models/authorization/endpointsModel.js b/src/models/authorization/endpointsModel.js index 9da8666..b83364f 100644 --- a/src/models/authorization/endpointsModel.js +++ b/src/models/authorization/endpointsModel.js @@ -43,7 +43,14 @@ const insertEndpointsModel = ({conn, ...params}) => { const modifyEndpointsModel = ({conn, ...params}) => { return mysql .execute(updateEndpointsQuery(params), conn, params) - .then(queryResult => queryResult[1].map(({id, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered)) + .then(queryResult => { + const deletedItem = queryResult[1].find(item => item.deleted !== null); + + if (deletedItem) { + throw error404() + } + return queryResult[1].map(({id, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered) + }) } const softDeleteEndpointsModel = ({uuid, deleted, deletedBy, conn}) => { diff --git a/src/models/authorization/permissionsModel.js b/src/models/authorization/permissionsModel.js index 51f2b8e..d007369 100644 --- a/src/models/authorization/permissionsModel.js +++ b/src/models/authorization/permissionsModel.js @@ -39,7 +39,15 @@ const insertPermissionModel = ({conn, ...params}) => { const modifyPermissionModel = ({conn, ...params}) => { return mysql .execute(modifyPermissionsQuery(params), conn, params) - .then(queryResult => queryResult[1].map(({id, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered)) + .then(queryResult => { + const deletedItem = queryResult[1].find(item => item.deleted !== null); + + if (deletedItem) { + throw error404() + } + + return queryResult[1].map(({id, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered) + }) } const softDeletePermissionModel = ({uuid, deleted, deletedBy, conn}) => { diff --git a/src/models/authorization/roleModel.js b/src/models/authorization/roleModel.js index 3bf1554..4f3fff7 100644 --- a/src/models/authorization/roleModel.js +++ b/src/models/authorization/roleModel.js @@ -40,7 +40,14 @@ const modifyRoleModel = ({uuid, name, conn}) => { return mysql .execute(modifyRoleQuery(params), conn, params) - .then(res => res[1].map(({id, created, deleted, createdBy, deletedBy, ...rest}) => ({...rest}))) + .then(res => { + const deletedItem = res[1].find(item => item.deleted !== null); + + if (deletedItem) { + throw error404() + } + return res[1].map(({id, created, deleted, createdBy, deletedBy, ...rest}) => ({...rest})) + }) } const softDeleteRoleModel = ({uuid, deleted, deletedBy, conn}) => { diff --git a/src/models/authorization/roles_has_permissionsModel.js b/src/models/authorization/roles_has_permissionsModel.js index 5f37f2f..71a1d18 100644 --- a/src/models/authorization/roles_has_permissionsModel.js +++ b/src/models/authorization/roles_has_permissionsModel.js @@ -1,3 +1,4 @@ + import { randomUUID as uuidv4 } from 'node:crypto' import dayjs from 'dayjs' import mysql from '../../adapters/mysql.js' @@ -5,7 +6,8 @@ import { getRolesHasPermissionsQuery, countRolesHasPermissionsQuery, insertRolesHasPermissionsQuery, - softDeleteRolesHasPermissionsQuery + softDeleteRolesHasPermissionsQuery, + modifyRolesHasPermissionsQuery } from '../../repositories/authorization/roles_has_permissionsRepository.js' const getRolesHasPermissionsModel = ({conn, ...rest}) => { @@ -36,9 +38,22 @@ const insertRolesHasPermissionsModel = ({conn, ...rest}) => { .then(results => results[1].map(({id, uuid, fk_role, fk_permission, created, deleted, createdBy, deletedBy, ...rest}) => ({...rest}))) } +const modifyRolesHasPermissionsModel = ({conn, ...params}) => { + return mysql + .execute(modifyRolesHasPermissionsQuery(params), conn, params) + .then(queryResult => { + const deletedItem = queryResult[1].find(item => item.deleted !== null); + + if (deletedItem) { + throw error404() + } + return queryResult[1].map(({id, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered) + }) +} + const softDeleteRolesHasPermissionsModel = ({conn, deleted, deletedBy, ...rest}) => { const deletedData = deleted ? dayjs.utc(deleted).format('YYYY-MM-DD HH:mm:ss') : dayjs.utc().format('YYYY-MM-DD HH:mm:ss') - const params = { ...rest, deleted: deletedData } + const params = { ...rest, deleted: deletedData, deletedBy } return mysql .execute(softDeleteRolesHasPermissionsQuery(params), conn, params) @@ -48,5 +63,6 @@ export { getRolesHasPermissionsModel, countRolesHasPermissionsModel, insertRolesHasPermissionsModel, - softDeleteRolesHasPermissionsModel -} \ No newline at end of file + softDeleteRolesHasPermissionsModel, + modifyRolesHasPermissionsModel +} diff --git a/src/models/authorization/userModel.js b/src/models/authorization/userModel.js index 3fdbead..d57ce8a 100644 --- a/src/models/authorization/userModel.js +++ b/src/models/authorization/userModel.js @@ -9,6 +9,7 @@ import { deleteUserQuery, softDeleteUserQuery } from '../../repositories/authorization/userRepository.js' +import { error404 } from '../../utils/errors.js' const getUserListModel = ({conn, ...rest}) => { const now = dayjs.utc().format('YYYY-MM-DD HH:mm:ss') @@ -40,19 +41,23 @@ const insertUserModel = ({conn, ...params}) => { return mysql .execute(insertUserQuery({...params, uuid, now}), conn, {...params, uuid, now}) .then(queryResult => queryResult[1].map(({id, password, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered)) - .catch(err => { - reject(err) - }) } const modifyUserModel = ({conn, ...params}) => { return mysql .execute(modifyUserQuery(params), conn, params) - .then(queryResult => queryResult[1].map(({id, password, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered)) + .then(queryResult => { + const deletedItem = queryResult[1].find(item => item.deleted !== null); + + if (deletedItem) { + throw error404() + } + return queryResult[1].map(({id, password, created, deleted, createdBy, deletedBy, ...resultFiltered}) => resultFiltered) + }) } const softDeleteUserModel = ({uuid, deleted, deletedBy, conn}) => { - const deletedData = deleted ? dayjs.utc(deleted).format('YYYY-MM-DD HH:mm:ss') : dayjs.utc.format('YYYY-MM-DD HH:mm:ss') + const deletedData = deleted ? dayjs.utc(deleted).format('YYYY-MM-DD HH:mm:ss') : dayjs.utc().format('YYYY-MM-DD HH:mm:ss') const params = {uuid, deletedBy, deleted: deletedData} return mysql @@ -65,5 +70,4 @@ export{ softDeleteUserModel, insertUserModel, modifyUserModel -} - +} \ No newline at end of file