@mongez/gnz
Version:
Generator Z, the next generation of scaffolding tools.
95 lines (91 loc) • 5.05 kB
JavaScript
;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