diff --git a/app/controllers/links/addLink.js b/app/controllers/links/addLink.js index 8670f1c..4c65846 100644 --- a/app/controllers/links/addLink.js +++ b/app/controllers/links/addLink.js @@ -1,6 +1,6 @@ const addLink = require('express').Router(); -const Link = require('../../models/links'); const sendResponse = require('../../helpers/sendResponse'); +const { createLink } = require('../../services/database/link'); const log4js = require('log4js'); const logger = log4js.getLogger(); @@ -18,11 +18,11 @@ addLink.post('/', async (req, res) => { } try { - const linkData = new Link({ + const linkData = { linkName: req.body.linkName, linkAdd: req.body.linkAdd, - }); - await linkData.save(); + }; + await createLink(linkData); return sendResponse(res, 200, [], 'data saved successfully'); } catch (err) { logger.error(err); diff --git a/app/controllers/links/deleteLink.js b/app/controllers/links/deleteLink.js index 9db4628..9254f23 100644 --- a/app/controllers/links/deleteLink.js +++ b/app/controllers/links/deleteLink.js @@ -1,5 +1,5 @@ const deleteLink = require('express').Router(); -const Link = require('../../models/links'); +const { removeLink } = require('../../services/database/link'); const sendResponse = require('../../helpers/sendResponse'); const log4js = require('log4js'); @@ -17,8 +17,8 @@ deleteLink.delete('/:id', async (req, res) => { try { const { id } = req.params; - await Link.findByIdAndRemove(id); - return sendResponse(res, 200, [], 'deleted data successfully'); + await removeLink(id); + return sendResponse(res, 200, [], 'Link deleted successfully'); } catch (err) { logger.error(err); return sendResponse(res, 500, [], 'something went wrong'); diff --git a/app/controllers/links/getAllLinks.js b/app/controllers/links/getAllLinks.js index aad3953..ed7b49e 100644 --- a/app/controllers/links/getAllLinks.js +++ b/app/controllers/links/getAllLinks.js @@ -1,5 +1,5 @@ const getAllLinks = require('express').Router(); -const Link = require('../../models/links'); +const { findAllLinks } = require('../../services/database/link'); const sendResponse = require('../../helpers/sendResponse'); const log4js = require('log4js'); @@ -8,7 +8,7 @@ logger.level = 'error'; getAllLinks.get('/', async (req, res) => { try { - const data = await Link.find(); + const data = await findAllLinks(); return sendResponse(res, 200, data, 'Get data successfully'); } catch (err) { logger.error(err); diff --git a/app/controllers/links/getOneLink.js b/app/controllers/links/getOneLink.js index b859c01..c5ef837 100644 --- a/app/controllers/links/getOneLink.js +++ b/app/controllers/links/getOneLink.js @@ -1,6 +1,6 @@ const getOneLink = require('express').Router(); -const Link = require('../../models/links'); const sendResponse = require('../../helpers/sendResponse'); +const { findLinkById } = require('../../services/database/link'); const log4js = require('log4js'); const logger = log4js.getLogger(); @@ -16,7 +16,7 @@ getOneLink.get('/:id', async (req, res) => { try { const { id } = req.params; - const data = await Link.findById(id); + const data = await findLinkById(id); return sendResponse(res, 200, data, 'Get data successfully'); } catch (err) { logger.error(err); diff --git a/app/helpers/errorHandlers.js b/app/helpers/errorHandlers.js new file mode 100644 index 0000000..70a44cb --- /dev/null +++ b/app/helpers/errorHandlers.js @@ -0,0 +1,10 @@ +// TODO: file name plural or singular + +const errorHandler = fn => (...params) => fn(...params).catch((err) => { + console.log('Error occured', err); + // TODO: Add sentry or notification service +}); + +module.exports = { + errorHandler, +}; diff --git a/app/services/database/link/index.js b/app/services/database/link/index.js new file mode 100644 index 0000000..a7efe78 --- /dev/null +++ b/app/services/database/link/index.js @@ -0,0 +1,20 @@ +const Link = require('../../../models/links'); +const { errorHandler } = require('../../../helpers/errorHandlers'); + +const createLink = async (linkData) => { + const newLink = new Link(linkData); + await newLink.save(); +}; + +const removeLink = async id => Link.findByIdAndRemove(id); + +const findAllLinks = async () => Link.find(); + +const findLinkById = async id => Link.findById(id); + +module.exports = { + createLink: errorHandler(createLink), + removeLink: errorHandler(removeLink), + findAllLinks: errorHandler(findAllLinks), + findLinkById: errorHandler(findLinkById), +};