@agatee/cli
Version:
CLI for Agatee App
41 lines (40 loc) • 2.94 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.controllerStarterCode = void 0;
var text_1 = require("../../../utils/text");
var prettier_1 = require("prettier");
var controllerStarterCode = function (params, pathName) {
var _a;
var name = (0, text_1.camelCase)(pathName);
var capitalizedComponentName = (0, text_1.capitalize)(name);
var addMongoose = params.additionalParams['mongoose-model'] || params.additionalParams['mm'];
var endpoints = { create: false, read: false, update: false, delete: false };
if (params.additionalParams['endpoints'] || params.additionalParams['e']) {
var endpointOption = params.additionalParams['endpoints'] || params.additionalParams['e'];
var endpointValue = ((_a = endpointOption.values[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
endpoints.create = endpointValue.includes('c');
endpoints.read = endpointValue.includes('r');
endpoints.update = endpointValue.includes('u');
endpoints.delete = endpointValue.includes('d');
}
var contentHeader = "import { Response, Request } from 'express';\n";
contentHeader += "import { Injectable } from '@agatee/core';\n\n";
contentHeader += "import { " + capitalizedComponentName + "Service } from './" + pathName + ".service';\n\n";
var content = "@Injectable()\nexport class " + capitalizedComponentName + "Controller {\n\nconstructor(private service: " + capitalizedComponentName + "Service) {}\n";
if (addMongoose && endpoints.create) {
content += ("\nasync create(req: Request, res: Response) {\n const data = await this.service.create(req.body);\n res.status(200).json({data});\n }\n");
}
if (addMongoose && endpoints.read) {
content += ("\nasync list(req: Request, res: Response) {\n const data = await this.service.getAll();\n res.status(200).json({data});\n }\n");
content += ("\nasync read(req: Request, res: Response) {\n const data = await this.service.getById({id: req.params.id});\n res.status(200).json({data});\n }\n");
}
if (addMongoose && endpoints.update) {
content += ("\nasync update(req: Request, res: Response) {\n await this.service.updateById({id: req.params.id, update: req.body});\n const data = await this.service.getById({id: req.params.id})\n res.status(200).json({data});\n }\n");
}
if (addMongoose && endpoints.delete) {
content += ("\nasync delete(req: Request, res: Response) {\n await this.service.deleteById({id: req.params.id});\n res.status(200).json({message: 'Deleted'});\n }\n");
}
content += "\n}\n";
return contentHeader + (0, prettier_1.format)(content, { parser: 'typescript' });
};
exports.controllerStarterCode = controllerStarterCode;