"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Class which generates string content for API controller files
*
* @export
* @class Controller
*/
var Controller = (function () {
function Controller() {
}
/**
* Generate default controller string content
* @return {string} - default controller content
*/
Controller.prototype.getDefaultController = function () {
return "const defaultRoute = require('express').Router();\n\ndefaultRoute.get('/', (request, response, next) => {\n response.json({ message: 'Hello from Generaptr' });\n});\n\nmodule.exports = defaultRoute;";
};
/**
* Generate controller content for one model.
* @param {String} model - model string value. e.g: User
* @return {string} - string content for generated controller
*/
Controller.prototype.getController = function (model) {
return "const " + model + "Route = require('express').Router();\nconst " + model + "Service = require('../services/" + model + "Service');\nconst Util = require('../commons/util');\nconst STATUS_CODE = require('../commons/constants/statusCode');\n\n" + model + "Route.post('/', (request, response) => {\n " + model + "Service.save(request.body)\n .then(id => {\n response.header('Location', Util.generateLocationUri(request, id));\n response.status(STATUS_CODE.CREATED);\n response.end();\n })\n .catch(err => {\n response.status(err.status);\n response.json(err);\n });\n});\n\n" + model + "Route.get('/:id', (request, response) => {\n " + model + "Service.get(request.params.id)\n .then(data => {\n response.status(STATUS_CODE.OK);\n response.json(data);\n })\n .catch(err => {\n response.status(err.status);\n response.json(err);\n });\n});\n\n" + model + "Route.delete('/:id', (request, response) => {\n " + model + "Service.delete(request.params.id)\n .then(() => {\n response.status(STATUS_CODE.NO_CONTENT);\n response.end();\n })\n .catch(err => {\n response.status(err.status);\n response.json(err);\n });\n});\n\n" + model + "Route.put('/:id', (request, response) => {\n " + model + "Service.update(request.params.id, request.body)\n .then(data => {\n response.status(STATUS_CODE.OK);\n response.json(data);\n })\n .catch(err => {\n response.status(err.status);\n response.json(err);\n });\n});\n\n" + model + "Route.get('/', (request, response) => {\n " + model + "Service.getAll(request.query.offset, request.query.limit)\n .then(data => {\n if (!data || data.size === 0) {\n response.status(STATUS_CODE.NO_CONTENT);\n response.end();\n } else {\n response.status(STATUS_CODE.OK);\n response.json(data);\n }\n })\n .catch(err => {\n response.status(err.status);\n response.json(err);\n });\n});\n\nmodule.exports = " + model + "Route;";
};
return Controller;
}());
exports.Controller = Controller;
exports.default = new Controller();
|