lapeh 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,158 +1,158 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const moduleName = process.argv[2];
5
-
6
- if (!moduleName) {
7
- console.error('❌ Please specify the module name.');
8
- console.error(' Usage: npm run make:module <name>');
9
- console.error(' Example: npm run make:module product');
10
- process.exit(1);
11
- }
12
-
13
- // Convert "product" -> "Product" (PascalCase) for Class names
14
- const PascalCaseName = moduleName.charAt(0).toUpperCase() + moduleName.slice(1);
15
- // Convert "product" -> "product" (camelCase) for variables/files
16
- const camelCaseName = moduleName.toLowerCase();
17
-
18
- const srcDir = path.join(__dirname, '..', 'src');
19
-
20
- // 1. Create Controller
21
- const controllerContent = `import { Request, Response } from 'express';
22
- import { ${PascalCaseName}Service } from '../services/${camelCaseName}Service';
23
- import { successResponse, errorResponse } from '../utils/response';
24
-
25
- export const ${PascalCaseName}Controller = {
26
- async getAll(req: Request, res: Response) {
27
- try {
28
- const data = await ${PascalCaseName}Service.getAll();
29
- return successResponse(res, data, '${PascalCaseName}s retrieved successfully');
30
- } catch (error) {
31
- return errorResponse(res, error as Error);
32
- }
33
- },
34
-
35
- async getById(req: Request, res: Response) {
36
- try {
37
- const { id } = req.params;
38
- const data = await ${PascalCaseName}Service.getById(id);
39
- if (!data) return errorResponse(res, new Error('${PascalCaseName} not found'), 404);
40
- return successResponse(res, data, '${PascalCaseName} retrieved successfully');
41
- } catch (error) {
42
- return errorResponse(res, error as Error);
43
- }
44
- },
45
-
46
- async create(req: Request, res: Response) {
47
- try {
48
- const data = await ${PascalCaseName}Service.create(req.body);
49
- return successResponse(res, data, '${PascalCaseName} created successfully', 201);
50
- } catch (error) {
51
- return errorResponse(res, error as Error);
52
- }
53
- },
54
-
55
- async update(req: Request, res: Response) {
56
- try {
57
- const { id } = req.params;
58
- const data = await ${PascalCaseName}Service.update(id, req.body);
59
- return successResponse(res, data, '${PascalCaseName} updated successfully');
60
- } catch (error) {
61
- return errorResponse(res, error as Error);
62
- }
63
- },
64
-
65
- async delete(req: Request, res: Response) {
66
- try {
67
- const { id } = req.params;
68
- await ${PascalCaseName}Service.delete(id);
69
- return successResponse(res, null, '${PascalCaseName} deleted successfully');
70
- } catch (error) {
71
- return errorResponse(res, error as Error);
72
- }
73
- }
74
- };
75
- `;
76
-
77
- // 2. Create Service
78
- const serviceContent = `// import prisma from '../prisma'; // Uncomment this line if you use Prisma
79
-
80
- export const ${PascalCaseName}Service = {
81
- async getAll() {
82
- // return prisma.${camelCaseName}.findMany();
83
- return [{ id: 1, name: 'Sample ${PascalCaseName}' }]; // Placeholder
84
- },
85
-
86
- async getById(id: string) {
87
- // return prisma.${camelCaseName}.findUnique({ where: { id } });
88
- return { id, name: 'Sample ${PascalCaseName}' }; // Placeholder
89
- },
90
-
91
- async create(data: any) {
92
- // return prisma.${camelCaseName}.create({ data });
93
- return { id: Date.now(), ...data }; // Placeholder
94
- },
95
-
96
- async update(id: string, data: any) {
97
- // return prisma.${camelCaseName}.update({ where: { id }, data });
98
- return { id, ...data }; // Placeholder
99
- },
100
-
101
- async delete(id: string) {
102
- // return prisma.${camelCaseName}.delete({ where: { id } });
103
- return true; // Placeholder
104
- }
105
- };
106
- `;
107
-
108
- // 3. Create Route
109
- const routeContent = `import { Router } from 'express';
110
- import { ${PascalCaseName}Controller } from '../controllers/${camelCaseName}Controller';
111
- import { authenticateToken } from '../middleware/auth';
112
-
113
- const router = Router();
114
-
115
- router.get('/', authenticateToken, ${PascalCaseName}Controller.getAll);
116
- router.get('/:id', authenticateToken, ${PascalCaseName}Controller.getById);
117
- router.post('/', authenticateToken, ${PascalCaseName}Controller.create);
118
- router.put('/:id', authenticateToken, ${PascalCaseName}Controller.update);
119
- router.delete('/:id', authenticateToken, ${PascalCaseName}Controller.delete);
120
-
121
- export default router;
122
- `;
123
-
124
- const paths = {
125
- controller: path.join(srcDir, 'controllers', `${camelCaseName}Controller.ts`),
126
- service: path.join(srcDir, 'services', `${camelCaseName}Service.ts`),
127
- route: path.join(srcDir, 'routes', `${camelCaseName}.ts`),
128
- };
129
-
130
- // Helper to create directory if not exists
131
- function ensureDir(filePath) {
132
- const dirname = path.dirname(filePath);
133
- if (!fs.existsSync(dirname)) {
134
- fs.mkdirSync(dirname, { recursive: true });
135
- }
136
- }
137
-
138
- try {
139
- ensureDir(paths.controller);
140
- fs.writeFileSync(paths.controller, controllerContent);
141
- console.log(`✅ Created Controller: src/controllers/${camelCaseName}Controller.ts`);
142
-
143
- ensureDir(paths.service);
144
- fs.writeFileSync(paths.service, serviceContent);
145
- console.log(`✅ Created Service: src/services/${camelCaseName}Service.ts`);
146
-
147
- ensureDir(paths.route);
148
- fs.writeFileSync(paths.route, routeContent);
149
- console.log(`✅ Created Route: src/routes/${camelCaseName}.ts`);
150
-
151
- console.log('\n⚠️ Don\'t forget to register the new route in src/index.ts or src/server.ts!');
152
- console.log(` import ${camelCaseName}Routes from './routes/${camelCaseName}';`);
153
- console.log(` app.use('/${camelCaseName}s', ${camelCaseName}Routes);`);
154
-
155
- } catch (error) {
156
- console.error('❌ Error creating module:', error);
157
- process.exit(1);
158
- }
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const moduleName = process.argv[2];
5
+
6
+ if (!moduleName) {
7
+ console.error('❌ Please specify the module name.');
8
+ console.error(' Usage: npm run make:module <name>');
9
+ console.error(' Example: npm run make:module product');
10
+ process.exit(1);
11
+ }
12
+
13
+ // Convert "product" -> "Product" (PascalCase) for Class names
14
+ const PascalCaseName = moduleName.charAt(0).toUpperCase() + moduleName.slice(1);
15
+ // Convert "product" -> "product" (camelCase) for variables/files
16
+ const camelCaseName = moduleName.toLowerCase();
17
+
18
+ const srcDir = path.join(__dirname, '..', 'src');
19
+
20
+ // 1. Create Controller
21
+ const controllerContent = `import { Request, Response } from 'express';
22
+ import { ${PascalCaseName}Service } from '../services/${camelCaseName}Service';
23
+ import { successResponse, errorResponse } from '../utils/response';
24
+
25
+ export const ${PascalCaseName}Controller = {
26
+ async getAll(req: Request, res: Response) {
27
+ try {
28
+ const data = await ${PascalCaseName}Service.getAll();
29
+ return successResponse(res, data, '${PascalCaseName}s retrieved successfully');
30
+ } catch (error) {
31
+ return errorResponse(res, error as Error);
32
+ }
33
+ },
34
+
35
+ async getById(req: Request, res: Response) {
36
+ try {
37
+ const { id } = req.params;
38
+ const data = await ${PascalCaseName}Service.getById(id);
39
+ if (!data) return errorResponse(res, new Error('${PascalCaseName} not found'), 404);
40
+ return successResponse(res, data, '${PascalCaseName} retrieved successfully');
41
+ } catch (error) {
42
+ return errorResponse(res, error as Error);
43
+ }
44
+ },
45
+
46
+ async create(req: Request, res: Response) {
47
+ try {
48
+ const data = await ${PascalCaseName}Service.create(req.body);
49
+ return successResponse(res, data, '${PascalCaseName} created successfully', 201);
50
+ } catch (error) {
51
+ return errorResponse(res, error as Error);
52
+ }
53
+ },
54
+
55
+ async update(req: Request, res: Response) {
56
+ try {
57
+ const { id } = req.params;
58
+ const data = await ${PascalCaseName}Service.update(id, req.body);
59
+ return successResponse(res, data, '${PascalCaseName} updated successfully');
60
+ } catch (error) {
61
+ return errorResponse(res, error as Error);
62
+ }
63
+ },
64
+
65
+ async delete(req: Request, res: Response) {
66
+ try {
67
+ const { id } = req.params;
68
+ await ${PascalCaseName}Service.delete(id);
69
+ return successResponse(res, null, '${PascalCaseName} deleted successfully');
70
+ } catch (error) {
71
+ return errorResponse(res, error as Error);
72
+ }
73
+ }
74
+ };
75
+ `;
76
+
77
+ // 2. Create Service
78
+ const serviceContent = `// import prisma from '../prisma'; // Uncomment this line if you use Prisma
79
+
80
+ export const ${PascalCaseName}Service = {
81
+ async getAll() {
82
+ // return prisma.${camelCaseName}.findMany();
83
+ return [{ id: 1, name: 'Sample ${PascalCaseName}' }]; // Placeholder
84
+ },
85
+
86
+ async getById(id: string) {
87
+ // return prisma.${camelCaseName}.findUnique({ where: { id } });
88
+ return { id, name: 'Sample ${PascalCaseName}' }; // Placeholder
89
+ },
90
+
91
+ async create(data: any) {
92
+ // return prisma.${camelCaseName}.create({ data });
93
+ return { id: Date.now(), ...data }; // Placeholder
94
+ },
95
+
96
+ async update(id: string, data: any) {
97
+ // return prisma.${camelCaseName}.update({ where: { id }, data });
98
+ return { id, ...data }; // Placeholder
99
+ },
100
+
101
+ async delete(id: string) {
102
+ // return prisma.${camelCaseName}.delete({ where: { id } });
103
+ return true; // Placeholder
104
+ }
105
+ };
106
+ `;
107
+
108
+ // 3. Create Route
109
+ const routeContent = `import { Router } from 'express';
110
+ import { ${PascalCaseName}Controller } from '../controllers/${camelCaseName}Controller';
111
+ import { authenticateToken } from '../middleware/auth';
112
+
113
+ const router = Router();
114
+
115
+ router.get('/', authenticateToken, ${PascalCaseName}Controller.getAll);
116
+ router.get('/:id', authenticateToken, ${PascalCaseName}Controller.getById);
117
+ router.post('/', authenticateToken, ${PascalCaseName}Controller.create);
118
+ router.put('/:id', authenticateToken, ${PascalCaseName}Controller.update);
119
+ router.delete('/:id', authenticateToken, ${PascalCaseName}Controller.delete);
120
+
121
+ export default router;
122
+ `;
123
+
124
+ const paths = {
125
+ controller: path.join(srcDir, 'controllers', `${camelCaseName}Controller.ts`),
126
+ service: path.join(srcDir, 'services', `${camelCaseName}Service.ts`),
127
+ route: path.join(srcDir, 'routes', `${camelCaseName}.ts`),
128
+ };
129
+
130
+ // Helper to create directory if not exists
131
+ function ensureDir(filePath) {
132
+ const dirname = path.dirname(filePath);
133
+ if (!fs.existsSync(dirname)) {
134
+ fs.mkdirSync(dirname, { recursive: true });
135
+ }
136
+ }
137
+
138
+ try {
139
+ ensureDir(paths.controller);
140
+ fs.writeFileSync(paths.controller, controllerContent);
141
+ console.log(`✅ Created Controller: src/controllers/${camelCaseName}Controller.ts`);
142
+
143
+ ensureDir(paths.service);
144
+ fs.writeFileSync(paths.service, serviceContent);
145
+ console.log(`✅ Created Service: src/services/${camelCaseName}Service.ts`);
146
+
147
+ ensureDir(paths.route);
148
+ fs.writeFileSync(paths.route, routeContent);
149
+ console.log(`✅ Created Route: src/routes/${camelCaseName}.ts`);
150
+
151
+ console.log('\n⚠️ Don\'t forget to register the new route in src/index.ts or src/server.ts!');
152
+ console.log(` import ${camelCaseName}Routes from './routes/${camelCaseName}';`);
153
+ console.log(` app.use('/${camelCaseName}s', ${camelCaseName}Routes);`);
154
+
155
+ } catch (error) {
156
+ console.error('❌ Error creating module:', error);
157
+ process.exit(1);
158
+ }