91 lines
3.2 KiB
JavaScript
91 lines
3.2 KiB
JavaScript
const _find = require('./find');
|
|
const httpStatus = require('http-status');
|
|
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
|
|
|
|
function buildContext(req, res) {
|
|
return {
|
|
user: req.user
|
|
}
|
|
}
|
|
|
|
const defaultOptions = {
|
|
MODULE_NAME: 'default'
|
|
}
|
|
|
|
const generateControllers = (service, extraControllers = {}, options = defaultOptions) => {
|
|
const defaultControllers = {
|
|
find: async (req, res, next) => {
|
|
const params = extractParamsFromRequest(req, res);
|
|
|
|
try {
|
|
const result = await service.fetchAll(params, buildContext(req, res));
|
|
return handleResultResponse(result.rows, result.count, params, res);
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'find', error, res)
|
|
}
|
|
},
|
|
|
|
findOne: async (req, res, next) => {
|
|
const params = extractParamsFromRequest(req, res);
|
|
|
|
try {
|
|
const result = await service.fetchOne(params, buildContext(req, res));
|
|
console.log(result);
|
|
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'findOne', error, res)
|
|
}
|
|
},
|
|
|
|
count: async(req, res, next) => {
|
|
const params = extractParamsFromRequest(req, res);
|
|
|
|
try {
|
|
const result = await service.count(params, buildContext(req, res));
|
|
return handleResultResponse(result, null, params, res);
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'count', error, res)
|
|
}
|
|
},
|
|
|
|
create: async (req, res, next) => {
|
|
try {
|
|
const result = await service.create(req.body, buildContext(req, res));
|
|
return handleResultResponse(result, null, null, res, httpStatus.CREATED)
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'create', error, res)
|
|
}
|
|
},
|
|
|
|
update: async (req, res, next) => {
|
|
try {
|
|
const result = await service.update(req.params, req.body, buildContext(req, res));
|
|
return handleResultResponse(result, null, req.params, res, httpStatus.OK)
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'update', error, res)
|
|
}
|
|
},
|
|
|
|
delete: async (req, res, next) => {
|
|
try {
|
|
const result = await service.delete(req.params, buildContext(req, res));
|
|
return handleResultResponse(result, null, req.params, res, httpStatus.NO_CONTENT);
|
|
} catch (error) {
|
|
handleErrorResponse(options.MODULE_NAME, 'delete', error, res)
|
|
}
|
|
},
|
|
}
|
|
|
|
//const associationControllers = generateAssociationControllers(model, options);
|
|
|
|
//console.log(associationControllers);
|
|
|
|
return {
|
|
...defaultControllers,
|
|
//...associationControllers
|
|
...extraControllers
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = generateControllers; |