-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnewRoute.js
More file actions
93 lines (77 loc) · 2.19 KB
/
Copy pathnewRoute.js
File metadata and controls
93 lines (77 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// createEndpoint.js
import fs from 'fs';
import path from 'path';
import readline from 'readline';
const createEndpoint = (routeName) => {
// Nome formatado
const formattedName = routeName.toLowerCase();
// Diretórios
const folders = {
controller: `./src/controllers/${formattedName}.controller.js`,
service: `./src/services/${formattedName}.service.js`,
repository: `./src/repositories/${formattedName}.repository.js`,
route: `./src/routes/${formattedName}.route.js`,
};
// Templates de cada arquivo
const templates = {
controller: `// ${formattedName}.controller.js
const controller = async (request, reply) => {
// Implementação do controller
};
export default {
controller
};`,
service: `// ${formattedName}.service.js
const service = async () => {
// Implementação do serviço
};
export default {
service
};`,
repository: `// ${formattedName}.repository.js
import { prisma } from "../libs/prisma.js";
const repository = async () => {
// Implementação do repositório
};
export default {
repository
};`,
route: `// ${formattedName}.js
import authMiddleware from "../middlewares/authMiddleware.js";
const ${formattedName} = async (fastify) => {
// Definição das rotas usando Fastify
};
export default ${formattedName};
`
};
// Função para criar arquivos e pastas
for (const [key, filePath] of Object.entries(folders)) {
fs.mkdirSync(path.dirname(filePath), { recursive: true });
fs.writeFileSync(filePath, templates[key]);
console.log(`${key} criado: ${filePath}`);
}
};
// Função para capturar o nome da rota interativamente
const promptRouteName = () => {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('Por favor, forneça o nome da rota: ', (routeName) => {
if (!routeName) {
console.log('Nome da rota não pode ser vazio.');
rl.close();
process.exit(1);
} else {
createEndpoint(routeName);
rl.close();
}
});
};
// Executar o script com o nome da rota como argumento ou solicitar interativamente
const [,, routeName] = process.argv;
if (routeName) {
createEndpoint(routeName);
} else {
promptRouteName();
}