UNPKG

@tsclean/scaffold

Version:

This CLI creates an initial structure of a project based on clean architecture.

104 lines (98 loc) 4.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandCreateServiceResource = void 0; const ora_1 = __importDefault(require("ora")); const paths_1 = require("../utils/paths"); const emojis_1 = require("../utils/emojis"); const messages_1 = require("../utils/messages"); const CommandUtils_1 = require("./CommandUtils"); const constants_1 = require("../utils/constants"); const helpers_1 = require("../utils/helpers"); class CommandCreateServiceResource { constructor() { this.command = "create:service-resource"; this.describe = "Generate a new service resource"; } builder(args) { return args .option("name", { alias: "n", describe: "Name the service", demandOption: true }) .option("resource", { alias: "r", describe: "Service resource", demandOption: true }); } async handler(args) { let spinner; setTimeout(async () => (spinner = (0, ora_1.default)(constants_1.CONSTANTS.INSTALLING).start()), 1000); const basePath = paths_1.PATHS.PATH_SERVICE_RESOURCE(); const fileService = `${basePath}/${args.name}-service-resource-impl.ts`; const fileContract = `${process.cwd()}/src/domain/use-cases/${args.name}-service-resource.ts`; const fileServiceExists = await CommandUtils_1.CommandUtils.fileExists(fileService); if (fileServiceExists) throw messages_1.MESSAGES.FILE_EXISTS(fileService); try { await CommandUtils_1.CommandUtils.createFile(`${fileContract}`, CommandCreateServiceResource.getServiceResourceInterface(args.name)); await CommandUtils_1.CommandUtils.createFile(`${fileService}`, CommandCreateServiceResource.getServiceResource(args.name)); setTimeout(() => { spinner.succeed("Installation completed"); spinner.stopAndPersist({ symbol: emojis_1.EMOJIS.ROCKET, prefixText: messages_1.MESSAGES.REPOSITORY_SUCCESS(fileContract), text: messages_1.MESSAGES.FILE_SUCCESS("Services resource", fileService) }); }, 1000 * 5); } catch (error) { setTimeout(() => (spinner.fail("Installation fail"), (0, helpers_1.errorMessage)(error, "service")), 2000); } } static getServiceResourceInterface(param) { const name = CommandUtils_1.CommandUtils.capitalizeString(param); const nameTransform = param.replace(/-/g, "_"); const nameRef = nameTransform.toUpperCase(); return `export const ${nameRef}_RESOURCE_SERVICE = "${nameRef}_RESOURCE_SERVICE"; export interface I${name}ResourceService { findAll: () => Promise<any[]>; save: (data: any) => Promise<any>; findById: (id: number) => Promise<any>; update: (id: number, data: any) => Promise<boolean | undefined> } `; } static getServiceResource(param) { const name = CommandUtils_1.CommandUtils.capitalizeString(param); return `import {Service} from "@tsclean/core"; import {I${name}ResourceService} from "@/domain/use-cases/${param}-service-resource"; @Service() export class ${name}ServiceImpl implements I${name}ResourceService { constructor() { } // Se debe de tipar la devolución de la promesa async findAll(): Promise<any[]> { return Promise.resolve([]); } // Se debe de tipar la devolución de la promesa async findById(id: number): Promise<any> { return Promise.resolve(undefined); } // Se debe de tipar la devolución de la promesa y el input de la data async save(data: any): Promise<any> { return Promise.resolve(undefined); } // Se debe de tipar el input de la data async update(id: number, data: any): Promise<boolean | undefined> { return Promise.resolve(undefined); } }`; } } exports.CommandCreateServiceResource = CommandCreateServiceResource; //# sourceMappingURL=CommandCreateServiceResource.js.map