UNPKG

@mongez/gnz

Version:

Generator Z, the next generation of scaffolding tools.

95 lines (91 loc) 5.05 kB
'use strict';var fs=require('@mongez/fs'),reinforcements=require('@mongez/reinforcements'),chalk=require('chalk'),path=require('path'),pluralize=require('pluralize'),index$4=require('../generate-warlock-controller-handler/index.js'),index=require('../generate-warlock-output/index.js'),index$2=require('../generate-warlock-repository/index.js'),index$3=require('../generate-warlock-restful-controller/index.js'),main=require('../../../main.js'),index$1=require('../../generate-mongodb-model/index.js'),template=require('./template.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var chalk__default=/*#__PURE__*/_interopDefault(chalk);var path__default=/*#__PURE__*/_interopDefault(path);var pluralize__default=/*#__PURE__*/_interopDefault(pluralize);const generate = async (options) => { const now = Date.now(); options.saveTo = options.subModule ? options.saveTo : path__default.default.resolve(options.saveTo, reinforcements.toKebabCase(options.name)); const { name, saveTo } = options; fs.ensureDirectory(saveTo); // generate output const outputOptions = await main.gnz.execute(index.generateWarlockOutput.execute({ name: pluralize__default.default(options.name, 1), saveTo: saveTo + "/output", outputKeys: options.columns, })); // generate model const modelOptions = await main.gnz.execute(index$1.generateMongoDBModel.execute({ collection: pluralize__default.default(options.name), saveTo: saveTo + "/models", outputClass: outputOptions.name, outputClassPath: "./../../output/" + outputOptions.fileName, columns: options.columns, })); // generate repository const repositoryOptions = await main.gnz.execute(index$2.generateWarlockRepository.execute({ name: options.name, saveTo: saveTo + "/repositories", model: modelOptions.name, })); // generate restful controller await main.gnz.execute(index$3.generateWarlockRestful.execute({ name: options.name, saveTo: saveTo + "/controllers", model: modelOptions.name, repository: repositoryOptions.exportName, repositoryPath: "./../repositories/" + repositoryOptions.fileName, })); // generate the list controller await main.gnz.execute(index$4.generateWarlockHandler.execute({ name: "list-" + options.name, saveTo: saveTo + "/controllers", imports: [ `import { ${repositoryOptions.exportName} } from "../repositories/${repositoryOptions.fileName}";`, ], content: ` const {documents: ${reinforcements.toCamelCase(pluralize__default.default(options.name))}, paginationInfo} = await ${repositoryOptions.exportName}.listActive(request.all()); return response.success({ ${reinforcements.toCamelCase(pluralize__default.default(options.name))}, paginationInfo, }); `, })); // generate the get controller await main.gnz.execute(index$4.generateWarlockHandler.execute({ name: "get-" + options.name, saveTo: saveTo + "/controllers", imports: [ `import { ${repositoryOptions.exportName} } from "../repositories/${repositoryOptions.fileName}";`, ], content: ` const ${reinforcements.toCamelCase(pluralize__default.default(options.name, 1))} = await ${repositoryOptions.exportName}.getActive(request.int("id")); if (!${reinforcements.toCamelCase(pluralize__default.default(options.name, 1))}) { return response.notFound(); } return response.success({ ${reinforcements.toCamelCase(pluralize__default.default(options.name, 1))}, }); `, })); if (options.withEvents) { fs.ensureDirectory(saveTo + "/events"); } // create a utils directory fs.ensureDirectory(saveTo + "/utils"); // create a flags file fs.putFile(path__default.default.join(saveTo + "/utils", `flags.ts`), `// flags list`); // create a types file fs.putFile(path__default.default.join(saveTo + "/utils", `types.ts`), `// types list`); if (options.withLocales) { fs.putFile(path__default.default.join(saveTo + "/utils/locales.ts"), await template.getLocalesContent(options)); } // routes file const routesPath = path__default.default.join(saveTo + "/routes.ts"); if (options.subModule) { fs.putFile(routesPath, await template.generateSubModuleRoutesContent(options, routesPath)); } else { fs.putFile(routesPath, await template.generateModuleRoutesContent(options)); } console.log(` ${chalk__default.default.green(name)} module has been generated successfully in ${chalk__default.default.cyan(path__default.default .relative(process.cwd(), path__default.default.join(path__default.default.resolve(saveTo), name)) .replaceAll("\\", "/"))} ${chalk__default.default.gray(`(${Date.now() - now}ms)`)}`); };exports.generate=generate;//# sourceMappingURL=generator.js.map