UNPKG

4bnode

Version:

4bnode is a CLI-powered backend development platform with a built-in visual dashboard to generate, manage, and test Node.js/Express APIs faster.

83 lines (69 loc) 2.17 kB
#!/usr/bin/env node import path from "path"; import { select } from "@inquirer/prompts"; import { toPascalCase } from "./lib/names.js"; import { listRoutes, listModels } from "./lib/project.js"; import { getRouteFilePath, addImportToRoute, insertCodeIntoRoute, } from "./lib/routeFile.js"; import { showHeader, showTaskDone, showError, showFileAction, } from "./lib/ui.js"; async function main() { showHeader("add-mongo-delete", "Add data deletion route"); const routeFiles = listRoutes(); if (routeFiles.length === 0) { showError("No route files found in src/routes."); process.exit(1); } const modelFiles = listModels(); if (modelFiles.length === 0) { showError("No model files found in src/models."); process.exit(1); } const selectedRoute = await select({ message: "Select route file to modify:", choices: routeFiles.map((f) => ({ name: f, value: f })), }); const selectedModelFile = await select({ message: "Select model file to use:", choices: modelFiles.map((f) => ({ name: f, value: f })), }); const modelName = path.basename(selectedModelFile, ".js"); const pascalName = toPascalCase(modelName); const routeFilePath = getRouteFilePath(selectedRoute); console.log(); addImportToRoute( routeFilePath, `import ${pascalName} from '../models/${modelName}.js';` ); const deleteCode = ` router.delete('/:id', async (req, res) => { try { const deletedDocument = await ${pascalName}.findByIdAndDelete(req.params.id); if (!deletedDocument) { return res.status(404).json({ message: 'Document not found' }); } res.json({ message: 'Data deleted successfully', data: deletedDocument }); } catch (err) { console.error(err); res.status(500).json({ message: 'Server error' }); } });`; insertCodeIntoRoute(routeFilePath, deleteCode); showFileAction("updated", `src/routes/${selectedRoute}`); showTaskDone("Delete route added", [ `Route: DELETE /:id in ${selectedRoute}`, `Model: ${modelName}`, ]); } main().catch((err) => { if (err.name === "ExitPromptError") process.exit(0); showError(err.message); process.exit(1); });