diff --git a/src/repositories/authorization/endpointsRepository.js b/src/repositories/authorization/endpointsRepository.js index dd48a17..e9595b6 100644 --- a/src/repositories/authorization/endpointsRepository.js +++ b/src/repositories/authorization/endpointsRepository.js @@ -1,6 +1,6 @@ import { pagination } from "../../utils/pagination.js"; -const _endpointsQuery = (_pagination) => ({ count }) => ({ uuid, route, method }) => { +const _endpointsQuery = (_pagination = '') => ({ count }) => ({ uuid, route, method }) => { const uuidCondition = uuid ? "AND uuid = :uuid " : ""; const routeCondition = route ? "AND route = :route " : ""; const methodCondition = method ? "AND method = :method " : ""; @@ -46,12 +46,14 @@ const insertEndpointsQuery = () => { } const updateEndpointsQuery = () => { - const routeCondition = route ? 'route = :route ' : ''; + const routeCondition = route ? 'route = :route,' : ''; return ` UPDATE mydb.endpoints SET ${routeCondition} + uuid = :uuid WHERE uuid = :uuid; + AND deleted IS NULL; SELECT * FROM mydb.endpoints WHERE uuid = :uuid; ` } @@ -61,6 +63,7 @@ const softDeleteEndpointsQuery = () => { UPDATE mydb.endpoints SET deleted = :now, deletedBy = :deletedBy WHERE uuid = :uuid; + AND deleted IS NULL; SELECT * FROM mydb.endpoints WHERE uuid = :uuid; ` } diff --git a/src/repositories/authorization/permissionsRepository.js b/src/repositories/authorization/permissionsRepository.js index c3adc98..bbe0be1 100644 --- a/src/repositories/authorization/permissionsRepository.js +++ b/src/repositories/authorization/permissionsRepository.js @@ -1,6 +1,6 @@ import { pagination } from '../../utils/pagination.js' -const _permissionsQuery = (_pagination) => ({count}) => ({uuid, action, endpoint}) => { +const _permissionsQuery = (_pagination = '') => ({count}) => ({uuid, action, endpoint}) => { const uuidCondition = uuid ? 'AND uuid = :uuid ' : ''; const actionCondition = action ? 'AND action = :action ' : ''; const endpointCondition = endpoint ? 'AND fk_endpoint = (SELECT id from mydb.endpoints WHERE route = :endpoint)' : ''; @@ -20,7 +20,6 @@ const _permissionsQuery = (_pagination) => ({count}) => ({uuid, action, endpoint AND true ${uuidCondition} - ${nameCondition} ${actionCondition} ${endpointCondition} ${_pagination} @@ -55,17 +54,18 @@ const insertPermissionsQuery = () => { } const modifyPermissionsQuery = (action, endpoint) => { - const actionCondition = action ? 'action = :action ' : ''; - const endpointCondition = endpoint ? 'fk_endpoint = (SELECT id from mydb.endpoints WHERE route = :endpoint)' : ''; + const actionCondition = action ? 'action = :action ,' : ''; + const endpointCondition = endpoint ? 'fk_endpoint = (SELECT id from mydb.endpoints WHERE route = :endpoint),' : ''; return ` UPDATE mydb.permissions SET ${actionCondition} ${endpointCondition} + uuid = :uuid WHERE permissions.uuid = :uuid AND - permissions.deleted IS NULL + permissions.deleted IS NULL; SELECT * FROM mydb.permissions WHERE uuid = :uuid; ` } diff --git a/src/repositories/authorization/rolesRepository.js b/src/repositories/authorization/rolesRepository.js index d52ea47..ed82547 100644 --- a/src/repositories/authorization/rolesRepository.js +++ b/src/repositories/authorization/rolesRepository.js @@ -49,7 +49,7 @@ const countRoleQuery = rest => */ const insertRoleQuery = () => { return ` - INSERT INTO mydb.users ( + INSERT INTO mydb.roles ( uuid, name, created, @@ -79,7 +79,9 @@ const modifyRoleQuery = ({ name }) => { ${nameCondition} uuid = :uuid WHERE - roles.uuid = :uuid; + roles.uuid = :uuid + AND + roles.deleted IS NULL; SELECT mydb.roles.* FROM mydb.roles WHERE roles.uuid = :uuid diff --git a/src/repositories/authorization/roles_has_permissionsRepository.js b/src/repositories/authorization/roles_has_permissionsRepository.js index 9c23d1b..ce962d4 100644 --- a/src/repositories/authorization/roles_has_permissionsRepository.js +++ b/src/repositories/authorization/roles_has_permissionsRepository.js @@ -1,6 +1,6 @@ import { pagination } from '../../utils/pagination.js' -const _rolesHasPermissionsQuery = (_pagination) => ({count}) => ({uuid, permission_uuid, roleName}) => { +const _rolesHasPermissionsQuery = (_pagination = '') => ({count}) => ({uuid, permission_uuid, roleName}) => { const roleNameCondition = roleName ? 'AND fk_role = (SELECT id from mydb.roles WHERE name = :roleName)' : ''; const uuidCondition = uuid ? 'AND fk_role = (SELECT id from mydb.roles WHERE uuid = :roleUuid)' : ''; const permissionsUuidCondition = permission_uuid ? 'AND fk_permission = (SELECT id from mydb.permissions WHERE uuid = :permissionUuid)' : ''; @@ -68,8 +68,26 @@ const insertRolesHasPermissionsQuery = () => { ` } +const modifyRolesHasPermissionsQuery = (roleUuid, permissionUuid) => { + const roleUuidCondition = roleUuid ? 'fk_role = (SELECT id from mydb.roles WHERE uuid = :roleUuid),' : ''; + const permissionUuidCondition = permissionUuid ? 'fk_permission = (SELECT id from mydb.permissions WHERE uuid = :permissionUuid),' : ''; + return ` + UPDATE + mydb.roles_has_permissions as roles_has_permissions + SET + ${roleUuidCondition} + ${permissionUuidCondition} + uuid = :uuid + WHERE + roles_has_permissions.uuid = :uuid + AND + roles_has_permissions.deleted IS NULL; + SELECT * FROM mydb.roles_has_permissions WHERE uuid = :uuid; + ` +} + const softDeleteRolesHasPermissionsQuery = () => { - return ` + return ` UPDATE mydb.roles_has_permissions as roles_has_permissions SET @@ -81,12 +99,13 @@ const softDeleteRolesHasPermissionsQuery = () => { AND roles_has_permissions.deleted IS NULL SELECT * FROM mydb.roles_has_permissions WHERE uuid = :uuid; - ` + ` } export{ getRolesHasPermissionsQuery, - countRolesHasPermissionsQuery, insertRolesHasPermissionsQuery, - softDeleteRolesHasPermissionsQuery + countRolesHasPermissionsQuery, + softDeleteRolesHasPermissionsQuery, + modifyRolesHasPermissionsQuery } \ No newline at end of file diff --git a/src/repositories/authorization/userRepository.js b/src/repositories/authorization/userRepository.js index 5e13f7e..4fa0a3f 100644 --- a/src/repositories/authorization/userRepository.js +++ b/src/repositories/authorization/userRepository.js @@ -60,8 +60,10 @@ const countUserListQuery = rest => * Insert query using parameters passed in request * @returns {String} INSERT query */ -const insertUserQuery = () => { - const emailCondition = email ? ':email ' : null; +const insertUserQuery = ({email, fk_role, createdBy}) => { + const emailCondition = email ? ':email' : null; + const roleCondition = fk_role ? '(SELECT id FROM mydb.roles WHERE name = :fk_role)' : `(SELECT id FROM mydb.roles WHERE name = 'viewer')`; + const createdByCondition = createdBy ? 'createdBy = :createdBy' : null; return ` INSERT INTO mydb.users ( uuid, @@ -77,9 +79,9 @@ const insertUserQuery = () => { :username, :password, ${emailCondition}, - :role + ${roleCondition}, :now, - :createdBy + ${createdByCondition} ); SELECT * FROM mydb.users WHERE uuid = :uuid; ` @@ -89,13 +91,11 @@ const insertUserQuery = () => { * @param {Object} params All params involved in query to be modified in certain object matching uuid passed as req param * @returns {String} UPDATE query */ -const modifyUserQuery = ({ username, email, role }) => { - const usernameCondition = username ? ':username, ' : ''; - const passwordCondition = password ? ':password, ' : ''; - const emailCondition = email ? ':email, ' : ''; - const roleCondition = role ? '(SELECT id FROM mydb.roles WHERE name = :role) ' : ''; - const lastLoginDateCondition = lastLoginDate ? ':lastLoginDate, ' : ''; - const userStatusCondition = userStatus ? ':userStatus, ' : ''; +const modifyUserQuery = ({ username, password, email, role }) => { + const usernameCondition = username ? `username = :username, ` : ``; + const passwordCondition = password ? `password = :password, ` : ``; + const emailCondition = email ? `email = :email, ` : ``; + const roleCondition = role ? `fk_role = (SELECT id FROM mydb.roles WHERE name = :role) ` : ``; return ` UPDATE @@ -105,11 +105,11 @@ const modifyUserQuery = ({ username, email, role }) => { ${passwordCondition} ${emailCondition} ${roleCondition} - ${lastLoginDateCondition} - ${userStatusCondition} uuid = :uuid WHERE - users.uuid = :uuid; + users.uuid = :uuid + AND + users.deleted IS NULL; SELECT mydb.users.* FROM mydb.users WHERE users.uuid = :uuid