const userMapper = require('../repositories/userRepository') const logger = require('morgan') const errorMessages = require('../config/errorMessages') exports.user_list = async () => { try { const list_users = await userMapper.selectAllUser() return list_users } catch (err) { throw err } } exports.create_user = async (user) => { try { const { account } = user const session = await userMapper.startTransaction() try { const check_user = await userMapper.selectUserByAccount(account) if (check_user) { throw new Error(errorMessages.user.already_exists) } const result = await userMapper.createUser(user) await userMapper.commitTransaction(session) return result } catch (err) { try { await userMapper.rollbackTransaction(session) } catch (roolbackErr) { logger('Error rolling back transaction: ', roolbackErr) } throw err } } catch (err) { logger('Error creating user: ', err) throw err } }