API/controllers/account.controller.js
import AccountService from '../services/account.service';import ResponseGenerator from '../utils/ResponseGenerator'; const response = new ResponseGenerator(); /** * account controller performs account related function - CRUD */class AccountController { /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof AccountController */ static async createBankAccount(req, res) { const { id } = req.token; const { type, balance } = req.body; try { const account = await AccountService.createAccount(id, type, balance); return response.sendSuccess(res, 201, account); } catch (error) { return response.sendError(res, 400, error.message); } } /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof AccountController */Function `fetchAllAccounts` has a Cognitive Complexity of 9 (exceeds 6 allowed). Consider refactoring. static async fetchAllAccounts(req, res) { const { status } = req.query; try { if (status && !(['dormant', 'active'].includes(status))) { throw new Error('invalid status query'); } const accounts = await AccountService.getAllAccounts(); if (accounts.length > 0) { if (status) { const filtered = accounts.find(account => account.status === status); if (filtered) { return response.sendSuccess(res, 200, [filtered], 'Account was successfully fetched'); } return response.sendSuccess(res, 200, [], 'No account found'); } return response.sendSuccess(res, 200, accounts, 'Account was successfully fetched'); } return response.sendError(res, 204, 'no account has been created'); } catch (error) {Avoid too many `return` statements within this function. return response.sendError(res, 400, error.message); } } /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof AccountController */ static async changeStatus(req, res) { const { status } = req.body; const { accountNumber } = req.params; try { const data = await AccountService.changeAccountStatus(accountNumber, status); return response.sendSuccess(res, 200, data, 'Account status was successfully changed'); } catch (error) { return response.sendError(res, 400, error.message); } } /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof AccountController */Similar blocks of code found in 2 locations. Consider refactoring. static async getAccount(req, res) { const { accountNumber } = req.params; try { const data = await AccountService.getAccount(accountNumber); return response.sendSuccess(res, 200, data, 'Account was successfully fetched'); } catch (error) { return response.sendError(res, 400, error.message); } } /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof UserController */ static async getAUserAccounts(req, res) { const { email } = req.params; try { const accounts = await AccountService.getAUserAccounts(email); if (accounts) { return response.sendSuccess(res, 200, accounts, 'Accounts was successfully fetched'); } return response.sendError(res, 400, 'something went wrong'); } catch (error) { return response.sendError(res, 400, error.message); } } /** * @param{object} request express request object * @param{object} response express request object * @returns {json} json * @memberof AccountController */ static async deleteAccount(req, res) { const { accountNumber } = req.params; try { const message = await AccountService.deleteAccount(accountNumber); return response.sendSuccess(res, 200, null, message); } catch (error) { return response.sendError(res, 400, error.message); } }} export default AccountController;