UNPKG

api-writer

Version:

Streamline API writing with lightning-fast performance. Simplify complex tasks and reduce development time with streamlined code. Boost productivity and efficiency with optimized workflows.

101 lines (83 loc) 3.2 kB
const fs = require('fs'); const path = require('path'); const generateModel = require('./lib/generateModel'); const generateController = require('./lib/generateController'); const generateRoute = require('./lib/generateRoute'); function generateProject(projectName, modules) { const projectDir = path.join(__dirname, '../../', projectName); fs.mkdirSync(projectDir); // Create package.json file const packageJsonContent = ` { "name": "${projectName}", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", "mongoose": "^5.12.6" } } `; fs.writeFileSync(path.join(projectDir, 'package.json'), packageJsonContent); const modelDir = path.join(projectDir, 'models'); fs.mkdirSync(modelDir); const controllerDir = path.join(projectDir, 'controllers'); fs.mkdirSync(controllerDir); const routerDir = path.join(projectDir, 'routes'); fs.mkdirSync(routerDir); modules.forEach(module => { const { name, properties, additionalApis } = module; const modelContent = generateModel(name, properties); const controllerContent = generateController(name, `${name}Controller`, properties, additionalApis); const routeContent = generateRoute(name, name, `${name}Controller`, properties); fs.writeFileSync(path.join(modelDir, `${name}Model.js`), modelContent); fs.writeFileSync(path.join(controllerDir, `${name}Controller.js`), controllerContent); fs.writeFileSync(path.join(routerDir, `${name}Routes.js`), routeContent); }); const dbConfigContent = ` const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/${projectName}DB', { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); db.once('open', () => { console.log('Connected to MongoDB'); }); `; const dbConfigDir = path.join(projectDir, "config"); fs.mkdirSync(dbConfigDir); fs.writeFileSync(path.join(dbConfigDir, 'dbConfig.js'), dbConfigContent); // Create app.js const appContent = ` const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); const app = express(); const dbConfig = require('./config/dbConfig'); app.use(bodyParser.json()); app.use(cors()); // Initialize routes ${modules.map(module => `const ${module.name}Routes = require('./routes/${module.name}Routes');`).join('\n')} ${modules.map(module => `app.use('/${module.name.toLowerCase()}s', ${module.name}Routes);`).join('\n')} module.exports = app; `; fs.writeFileSync(path.join(projectDir, 'app.js'), appContent); // Create server.js const serverContent = ` const app = require('./app'); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(\`Server is running on port \${PORT}\`); }); `; fs.writeFileSync(path.join(projectDir, 'server.js'), serverContent); } module.exports = generateProject;