@diagramers/cli 1.0.57 → 1.0.61

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.
package/README.md CHANGED
@@ -92,16 +92,33 @@ diagramers extend --module categories --fields name,description,slug
92
92
  diagramers extend --module users --type mongodb --fields email,username,role
93
93
  ```
94
94
 
95
- ### Generate Database Schemas
95
+ ### Generate Endpoints
96
96
  ```bash
97
- # Generate MongoDB collection
98
- diagramers extend --table products --fields name,price,description
97
+ # Generate endpoint for existing module
98
+ diagramers extend --endpoint users:search-user --method POST
99
99
 
100
- # Generate SQL table
101
- diagramers extend --table orders --type mysql --fields customer_id,amount,status
100
+ # Generate endpoint with custom path
101
+ diagramers extend --endpoint products:find-by-category --method GET --path find-category
102
+
103
+ # Generate endpoint with description
104
+ diagramers extend --endpoint orders:cancel-order --method PUT --description "Cancel an order"
105
+ ```
106
+
107
+ ### Generate Database Tables
108
+ ```bash
109
+ # Generate table with default fields (name, description)
110
+ diagramers extend --table categories
102
111
 
103
- # Generate PostgreSQL table
104
- diagramers extend --table categories --type postgres --fields name,slug,parent_id
112
+ # Generate table with custom fields
113
+ diagramers extend --table products --fields name,price,description,category_id
114
+
115
+ # Generate table with specific field types
116
+ diagramers extend --table orders --fields customer_email,amount,status,created_date
117
+
118
+ # Table generation automatically:
119
+ # - Creates entity and schema files
120
+ # - Adds to database seeder with sample data
121
+ # - Uses proper naming conventions (plural table, singular files)
105
122
  ```
106
123
 
107
124
  ### Generate Database Relations
@@ -225,13 +242,21 @@ diagramers extend --table users --type postgres --fields email,username,role
225
242
  diagramers extend --table settings --type sqlite --fields key,value
226
243
  ```
227
244
 
228
- ### Relations
245
+ ### Generate Relations
229
246
  ```bash
230
- # One-to-Many relations
231
- diagramers extend --relation user-posts --type mongodb
247
+ # Generate one-to-many relation (default)
248
+ diagramers extend --relation user-posts
232
249
 
233
- # Many-to-Many relations
234
- diagramers extend --relation product-categories --type mysql
250
+ # Generate many-to-many relation
251
+ diagramers extend --relation product-categories:many-to-many
252
+
253
+ # Generate one-to-one relation
254
+ diagramers extend --relation user-profile:one-to-one
255
+
256
+ # Supported relation types:
257
+ # - one-to-many (default)
258
+ # - many-to-many
259
+ # - one-to-one
235
260
  ```
236
261
 
237
262
  ## 🔌 Plugin System
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,WAoE1C"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,WAsF1C"}
@@ -28,6 +28,24 @@ function apiCommand(program) {
28
28
  process.exit(1);
29
29
  }
30
30
  });
31
+ // Generate endpoint command
32
+ api
33
+ .command('generate:endpoint <module-name> <endpoint-name>')
34
+ .description('Generate a new endpoint for an existing module')
35
+ .option('-m, --method <method>', 'HTTP method (GET, POST, PUT, DELETE)', 'GET')
36
+ .option('-p, --path <path>', 'Custom path for the endpoint (defaults to endpoint name)')
37
+ .option('-d, --description <description>', 'Description for the endpoint')
38
+ .action(async (moduleName, endpointName, options) => {
39
+ try {
40
+ console.log(chalk_1.default.blue(`🚀 Generating endpoint '${endpointName}' for module '${moduleName}'`));
41
+ await (0, api_generator_1.generateEndpoint)(moduleName, endpointName, options);
42
+ console.log(chalk_1.default.green(`✅ Endpoint '${endpointName}' generated successfully!`));
43
+ }
44
+ catch (error) {
45
+ console.error(chalk_1.default.red(`❌ Error generating endpoint: ${error.message}`));
46
+ process.exit(1);
47
+ }
48
+ });
31
49
  // Process template command
32
50
  api
33
51
  .command('process:template <name>')
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAiF7C"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QA0G7C"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.extendCommand = extendCommand;
7
7
  const project_extender_1 = require("../services/project-extender");
8
+ const table_generator_1 = require("../services/table-generator");
8
9
  const chalk_1 = __importDefault(require("chalk"));
9
10
  function extendCommand(program) {
10
11
  program
@@ -12,12 +13,16 @@ function extendCommand(program) {
12
13
  .description('Extend project with additional features and modules')
13
14
  .option('-f, --feature <feature>', 'Feature to add (auth, email, socket, etc.)')
14
15
  .option('-m, --module <module>', 'Generate new module with full CRUD operations')
15
- .option('-t, --table <table>', 'Generate database table/collection')
16
+ .option('-e, --endpoint <module:endpoint>', 'Generate new endpoint for existing module (format: module:endpoint)')
17
+ .option('-t, --table <table>', 'Generate database table/collection with seeding')
16
18
  .option('-r, --relation <relation>', 'Generate database relations')
17
19
  .option('-l, --list', 'List available features and templates')
18
20
  .option('--crud', 'Generate full CRUD operations for module')
19
21
  .option('--fields <fields>', 'Comma-separated list of fields for module/table')
20
22
  .option('--type <type>', 'Database type (mongodb, mysql, postgres)')
23
+ .option('--method <method>', 'HTTP method for endpoint (GET, POST, PUT, DELETE)', 'GET')
24
+ .option('--path <path>', 'Custom path for endpoint (defaults to endpoint name)')
25
+ .option('--description <description>', 'Description for the endpoint')
21
26
  .action(async (options) => {
22
27
  try {
23
28
  if (options.list) {
@@ -26,6 +31,22 @@ function extendCommand(program) {
26
31
  return;
27
32
  }
28
33
  const extender = new project_extender_1.ProjectExtender();
34
+ // Generate new endpoint for existing module
35
+ if (options.endpoint) {
36
+ const [moduleName, endpointName] = options.endpoint.split(':');
37
+ if (!moduleName || !endpointName) {
38
+ console.error(chalk_1.default.red('❌ Endpoint format should be module:endpoint (e.g., product:search)'));
39
+ process.exit(1);
40
+ }
41
+ console.log(chalk_1.default.blue(`🔧 Generating endpoint '${endpointName}' for module '${moduleName}'`));
42
+ await extender.generateEndpoint(moduleName, endpointName, {
43
+ method: options.method,
44
+ path: options.path,
45
+ description: options.description
46
+ });
47
+ console.log(chalk_1.default.green(`✅ Endpoint '${endpointName}' generated successfully!`));
48
+ return;
49
+ }
29
50
  // Generate new module
30
51
  if (options.module) {
31
52
  console.log(chalk_1.default.blue(`🔧 Generating module: ${options.module}`));
@@ -40,7 +61,7 @@ function extendCommand(program) {
40
61
  // Generate database table
41
62
  if (options.table) {
42
63
  console.log(chalk_1.default.blue(`🗄️ Generating table: ${options.table}`));
43
- await extender.generateTable(options.table, {
64
+ await (0, table_generator_1.generateTable)(options.table, {
44
65
  fields: options.fields?.split(','),
45
66
  type: options.type || 'mongodb'
46
67
  });
@@ -50,17 +71,21 @@ function extendCommand(program) {
50
71
  // Generate database relations
51
72
  if (options.relation) {
52
73
  console.log(chalk_1.default.blue(`🔗 Generating relations for: ${options.relation}`));
53
- // Parse relation parameters (format: table1-table2:type)
74
+ // Parse relation parameters (format: table1-table2 or table1-table2:type)
54
75
  const relationParts = options.relation.split(':');
55
76
  const tables = relationParts[0].split('-');
56
- const relationType = relationParts[1] || 'one-to-one';
77
+ const relationType = relationParts[1] || 'one-to-many'; // Default to one-to-many
57
78
  if (tables.length !== 2) {
58
- throw new Error('Relation format should be: table1-table2:type (e.g., user-posts:one-to-many)');
79
+ console.error(chalk_1.default.red('Relation format should be table1-table2 or table1-table2:type'));
80
+ console.error(chalk_1.default.red(' Examples: user-post, product-category:many-to-many'));
81
+ process.exit(1);
59
82
  }
60
83
  const [table1, table2] = tables;
61
84
  // Import and call the relation generator
62
85
  const { generateRelation } = require('../services/relation-generator');
63
86
  await generateRelation(table1, table2, relationType);
87
+ console.log(chalk_1.default.green(`✅ Relations ${options.relation} generated successfully!`));
88
+ return;
64
89
  }
65
90
  // Add feature (legacy support)
66
91
  if (options.feature) {
@@ -1 +1 @@
1
- {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare function generateModule(moduleName: string): Promise<void>;
2
+ export declare function generateEndpoint(moduleName: string, endpointName: string, options?: any): Promise<void>;
2
3
  //# sourceMappingURL=api-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-generator.d.ts","sourceRoot":"","sources":["../../src/services/api-generator.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DtE"}
1
+ {"version":3,"file":"api-generator.d.ts","sourceRoot":"","sources":["../../src/services/api-generator.ts"],"names":[],"mappings":"AAqBA,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DtE;AAmbD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CjH"}
@@ -34,8 +34,27 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.generateModule = generateModule;
37
+ exports.generateEndpoint = generateEndpoint;
37
38
  const fs = __importStar(require("fs"));
38
39
  const path = __importStar(require("path"));
40
+ // Function to convert plural module names to singular for file names
41
+ function pluralToSingular(word) {
42
+ // Simple pluralization rules - can be extended as needed
43
+ if (word.endsWith('ies')) {
44
+ return word.slice(0, -3) + 'y'; // categories -> category
45
+ }
46
+ else if (word.endsWith('es')) {
47
+ return word.slice(0, -2); // boxes -> box
48
+ }
49
+ else if (word.endsWith('s')) {
50
+ return word.slice(0, -1); // users -> user, products -> product
51
+ }
52
+ return word; // already singular
53
+ }
54
+ // Function to convert hyphenated names to camelCase for method names
55
+ function toCamelCase(str) {
56
+ return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
57
+ }
39
58
  async function generateModule(moduleName) {
40
59
  // Validate module name
41
60
  if (!moduleName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(moduleName)) {
@@ -479,4 +498,315 @@ async function createDatabaseTable(currentDir, moduleName, moduleNameCapitalized
479
498
  }
480
499
  console.log('✅ Database table creation script added');
481
500
  }
501
+ async function generateEndpoint(moduleName, endpointName, options = {}) {
502
+ // Validate inputs
503
+ if (!moduleName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(moduleName)) {
504
+ throw new Error('Invalid module name. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
505
+ }
506
+ if (!endpointName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(endpointName)) {
507
+ throw new Error('Invalid endpoint name. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
508
+ }
509
+ const moduleNameCapitalized = moduleName.charAt(0).toUpperCase() + moduleName.slice(1);
510
+ const endpointNameCapitalized = endpointName.charAt(0).toUpperCase() + endpointName.slice(1);
511
+ const currentDir = process.cwd();
512
+ const modulePath = path.join(currentDir, 'src/modules', moduleName);
513
+ // Check if module exists
514
+ if (!fs.existsSync(modulePath)) {
515
+ throw new Error(`Module '${moduleName}' does not exist. Please create the module first using 'generate:module ${moduleName}'`);
516
+ }
517
+ // Set default options
518
+ const method = (options.method || 'GET').toUpperCase();
519
+ const customPath = options.path || endpointName;
520
+ const description = options.description || `${endpointNameCapitalized} endpoint for ${moduleName}`;
521
+ console.log(`🔧 Adding endpoint '${endpointName}' to module '${moduleName}'...`);
522
+ // Convert endpoint name to camelCase for method names
523
+ const camelCaseEndpoint = toCamelCase(endpointName);
524
+ const camelCaseEndpointCapitalized = camelCaseEndpoint.charAt(0).toUpperCase() + camelCaseEndpoint.slice(1);
525
+ // Add service method
526
+ console.log('📝 Adding service method...');
527
+ await addServiceMethod(modulePath, moduleName, moduleNameCapitalized, camelCaseEndpoint, camelCaseEndpointCapitalized, method, description);
528
+ // Add controller method
529
+ console.log('🎮 Adding controller method...');
530
+ await addControllerMethod(modulePath, moduleName, moduleNameCapitalized, camelCaseEndpoint, camelCaseEndpointCapitalized, method, customPath, description);
531
+ // Add route
532
+ console.log('🛣️ Adding route...');
533
+ await addRoute(modulePath, moduleName, moduleNameCapitalized, camelCaseEndpoint, camelCaseEndpointCapitalized, method, customPath);
534
+ console.log(`✅ Endpoint '${endpointName}' added to module '${moduleName}' successfully!`);
535
+ console.log(`🔗 New endpoint available at: ${method} /api/${moduleName}/${customPath}`);
536
+ }
537
+ async function addServiceMethod(modulePath, moduleName, moduleNameCapitalized, endpointName, endpointNameCapitalized, method, description) {
538
+ const singularName = pluralToSingular(moduleName);
539
+ const servicePath = path.join(modulePath, 'services', `${singularName}.service.ts`);
540
+ if (!fs.existsSync(servicePath)) {
541
+ throw new Error(`Service file not found: ${servicePath}`);
542
+ }
543
+ let serviceContent = fs.readFileSync(servicePath, 'utf8');
544
+ // Generate service method based on HTTP method
545
+ let serviceMethod = '';
546
+ switch (method) {
547
+ case 'GET':
548
+ serviceMethod = ` async ${endpointName}(params?: any) {
549
+ // TODO: Implement ${endpointName} logic
550
+ // Example: return await ${moduleNameCapitalized}Model.find(params);
551
+ return { message: '${endpointNameCapitalized} endpoint - implement your logic here', params };
552
+ }`;
553
+ break;
554
+ case 'POST':
555
+ serviceMethod = ` async ${endpointName}(data: any) {
556
+ // TODO: Implement ${endpointName} logic
557
+ // Example: return await ${moduleNameCapitalized}Model.create(data);
558
+ return { message: '${endpointNameCapitalized} endpoint - implement your logic here', data };
559
+ }`;
560
+ break;
561
+ case 'PUT':
562
+ serviceMethod = ` async ${endpointName}(id: string, data: any) {
563
+ // TODO: Implement ${endpointName} logic
564
+ // Example: return await ${moduleNameCapitalized}Model.findByIdAndUpdate(id, data, { new: true });
565
+ return { message: '${endpointNameCapitalized} endpoint - implement your logic here', id, data };
566
+ }`;
567
+ break;
568
+ case 'DELETE':
569
+ serviceMethod = ` async ${endpointName}(id: string) {
570
+ // TODO: Implement ${endpointName} logic
571
+ // Example: return await ${moduleNameCapitalized}Model.findByIdAndUpdate(id, { status: 0 }, { new: true });
572
+ return { message: '${endpointNameCapitalized} endpoint - implement your logic here', id };
573
+ }`;
574
+ break;
575
+ default:
576
+ serviceMethod = ` async ${endpointName}(params?: any) {
577
+ // TODO: Implement ${endpointName} logic
578
+ return { message: '${endpointNameCapitalized} endpoint - implement your logic here', params };
579
+ }`;
580
+ }
581
+ // Add method before the closing brace
582
+ const lastBraceIndex = serviceContent.lastIndexOf('}');
583
+ serviceContent = serviceContent.slice(0, lastBraceIndex) + serviceMethod + '\n' + serviceContent.slice(lastBraceIndex);
584
+ fs.writeFileSync(servicePath, serviceContent);
585
+ }
586
+ async function addControllerMethod(modulePath, moduleName, moduleNameCapitalized, endpointName, endpointNameCapitalized, method, customPath, description) {
587
+ const singularName = pluralToSingular(moduleName);
588
+ const controllerPath = path.join(modulePath, 'controllers', `${singularName}.controller.ts`);
589
+ if (!fs.existsSync(controllerPath)) {
590
+ throw new Error(`Controller file not found: ${controllerPath}`);
591
+ }
592
+ let controllerContent = fs.readFileSync(controllerPath, 'utf8');
593
+ // Generate Swagger documentation and controller method
594
+ let swaggerDoc = '';
595
+ let controllerMethod = '';
596
+ switch (method) {
597
+ case 'GET':
598
+ swaggerDoc = ` /**
599
+ * @openapi
600
+ * /api/${moduleName}/${customPath}:
601
+ * get:
602
+ * summary: ${endpointNameCapitalized} ${moduleName}
603
+ * description: ${description}
604
+ * tags: [${moduleNameCapitalized}s]
605
+ * responses:
606
+ * 200:
607
+ * description: ${endpointNameCapitalized} retrieved successfully
608
+ * content:
609
+ * application/json:
610
+ * schema:
611
+ * type: object
612
+ * properties:
613
+ * Data:
614
+ * type: object
615
+ * StatusCode:
616
+ * type: integer
617
+ * example: 1000
618
+ * 400:
619
+ * description: Bad request
620
+ */`;
621
+ controllerMethod = ` async ${endpointName}(req, res) {
622
+ const data = await this.service.${endpointName}(req.query);
623
+ res.json(data);
624
+ }`;
625
+ break;
626
+ case 'POST':
627
+ swaggerDoc = ` /**
628
+ * @openapi
629
+ * /api/${moduleName}/${customPath}:
630
+ * post:
631
+ * summary: ${endpointNameCapitalized} ${moduleName}
632
+ * description: ${description}
633
+ * tags: [${moduleNameCapitalized}s]
634
+ * requestBody:
635
+ * required: true
636
+ * content:
637
+ * application/json:
638
+ * schema:
639
+ * type: object
640
+ * properties:
641
+ * # Add your request body properties here
642
+ * responses:
643
+ * 201:
644
+ * description: ${endpointNameCapitalized} created successfully
645
+ * content:
646
+ * application/json:
647
+ * schema:
648
+ * type: object
649
+ * properties:
650
+ * Data:
651
+ * type: object
652
+ * StatusCode:
653
+ * type: integer
654
+ * example: 1000
655
+ * 400:
656
+ * description: Bad request
657
+ */`;
658
+ controllerMethod = ` async ${endpointName}(req, res) {
659
+ const data = await this.service.${endpointName}(req.body);
660
+ res.json(data);
661
+ }`;
662
+ break;
663
+ case 'PUT':
664
+ swaggerDoc = ` /**
665
+ * @openapi
666
+ * /api/${moduleName}/${customPath}/{id}:
667
+ * put:
668
+ * summary: ${endpointNameCapitalized} ${moduleName}
669
+ * description: ${description}
670
+ * tags: [${moduleNameCapitalized}s]
671
+ * parameters:
672
+ * - in: path
673
+ * name: id
674
+ * required: true
675
+ * schema:
676
+ * type: string
677
+ * description: ${moduleNameCapitalized} ID
678
+ * requestBody:
679
+ * required: true
680
+ * content:
681
+ * application/json:
682
+ * schema:
683
+ * type: object
684
+ * properties:
685
+ * # Add your request body properties here
686
+ * responses:
687
+ * 200:
688
+ * description: ${endpointNameCapitalized} updated successfully
689
+ * content:
690
+ * application/json:
691
+ * schema:
692
+ * type: object
693
+ * properties:
694
+ * Data:
695
+ * type: object
696
+ * StatusCode:
697
+ * type: integer
698
+ * example: 1000
699
+ * 404:
700
+ * description: ${moduleNameCapitalized} not found
701
+ */`;
702
+ controllerMethod = ` async ${endpointName}(req, res) {
703
+ const data = await this.service.${endpointName}(req.params.id, req.body);
704
+ res.json(data);
705
+ }`;
706
+ break;
707
+ case 'DELETE':
708
+ swaggerDoc = ` /**
709
+ * @openapi
710
+ * /api/${moduleName}/${customPath}/{id}:
711
+ * delete:
712
+ * summary: ${endpointNameCapitalized} ${moduleName}
713
+ * description: ${description}
714
+ * tags: [${moduleNameCapitalized}s]
715
+ * parameters:
716
+ * - in: path
717
+ * name: id
718
+ * required: true
719
+ * schema:
720
+ * type: string
721
+ * description: ${moduleNameCapitalized} ID
722
+ * responses:
723
+ * 200:
724
+ * description: ${endpointNameCapitalized} successful
725
+ * content:
726
+ * application/json:
727
+ * schema:
728
+ * type: object
729
+ * properties:
730
+ * Data:
731
+ * type: object
732
+ * StatusCode:
733
+ * type: integer
734
+ * example: 1000
735
+ * 404:
736
+ * description: ${moduleNameCapitalized} not found
737
+ */`;
738
+ controllerMethod = ` async ${endpointName}(req, res) {
739
+ const data = await this.service.${endpointName}(req.params.id);
740
+ res.json(data);
741
+ }`;
742
+ break;
743
+ default:
744
+ swaggerDoc = ` /**
745
+ * @openapi
746
+ * /api/${moduleName}/${customPath}:
747
+ * ${method.toLowerCase()}:
748
+ * summary: ${endpointNameCapitalized} ${moduleName}
749
+ * description: ${description}
750
+ * tags: [${moduleNameCapitalized}s]
751
+ * responses:
752
+ * 200:
753
+ * description: ${endpointNameCapitalized} successful
754
+ * content:
755
+ * application/json:
756
+ * schema:
757
+ * type: object
758
+ * properties:
759
+ * Data:
760
+ * type: object
761
+ * StatusCode:
762
+ * type: integer
763
+ * example: 1000
764
+ */`;
765
+ controllerMethod = ` async ${endpointName}(req, res) {
766
+ const data = await this.service.${endpointName}(req.query);
767
+ res.json(data);
768
+ }`;
769
+ }
770
+ // Add method before the closing brace
771
+ const lastBraceIndex = controllerContent.lastIndexOf('}');
772
+ const methodWithDoc = swaggerDoc + '\n' + controllerMethod;
773
+ controllerContent = controllerContent.slice(0, lastBraceIndex) + methodWithDoc + '\n' + controllerContent.slice(lastBraceIndex);
774
+ fs.writeFileSync(controllerPath, controllerContent);
775
+ }
776
+ async function addRoute(modulePath, moduleName, moduleNameCapitalized, endpointName, endpointNameCapitalized, method, customPath) {
777
+ const singularName = pluralToSingular(moduleName);
778
+ const routePath = path.join(modulePath, 'routes', `${singularName}.routes.ts`);
779
+ if (!fs.existsSync(routePath)) {
780
+ throw new Error(`Route file not found: ${routePath}`);
781
+ }
782
+ let routeContent = fs.readFileSync(routePath, 'utf8');
783
+ // Generate route based on HTTP method
784
+ let routeLine = '';
785
+ switch (method) {
786
+ case 'GET':
787
+ routeLine = `router.get('/${customPath}', (req, res) => controller.${endpointName}(req, res));`;
788
+ break;
789
+ case 'POST':
790
+ routeLine = `router.post('/${customPath}', (req, res) => controller.${endpointName}(req, res));`;
791
+ break;
792
+ case 'PUT':
793
+ routeLine = `router.put('/${customPath}/:id', (req, res) => controller.${endpointName}(req, res));`;
794
+ break;
795
+ case 'DELETE':
796
+ routeLine = `router.delete('/${customPath}/:id', (req, res) => controller.${endpointName}(req, res));`;
797
+ break;
798
+ default:
799
+ routeLine = `router.${method.toLowerCase()}('/${customPath}', (req, res) => controller.${endpointName}(req, res));`;
800
+ }
801
+ // Add route before the export statement
802
+ const exportIndex = routeContent.indexOf('export default router;');
803
+ if (exportIndex !== -1) {
804
+ routeContent = routeContent.slice(0, exportIndex) + routeLine + '\n\n' + routeContent.slice(exportIndex);
805
+ }
806
+ else {
807
+ // If no export found, add at the end
808
+ routeContent += '\n' + routeLine + '\n';
809
+ }
810
+ fs.writeFileSync(routePath, routeContent);
811
+ }
482
812
  //# sourceMappingURL=api-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-generator.js","sourceRoot":"","sources":["../../src/services/api-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-generator.js","sourceRoot":"","sources":["../../src/services/api-generator.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export declare class ProjectExtender {
11
11
  generateModule(moduleName: string, options?: any): Promise<void>;
12
12
  generateTable(tableName: string, options?: any): Promise<void>;
13
13
  generateRelations(relationName: string, options?: any): Promise<void>;
14
+ generateEndpoint(moduleName: string, endpointName: string, options?: any): Promise<void>;
15
+ private addServiceMethod;
16
+ private addControllerMethod;
17
+ private addRoute;
14
18
  private createFeatureStructure;
15
19
  private createFeatureCoreFiles;
16
20
  private generateFeatureController;
@@ -1 +1 @@
1
- {"version":3,"file":"project-extender.d.ts","sourceRoot":"","sources":["../../src/services/project-extender.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CA8Bd;IAEI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B7B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B9C,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAWjE,sBAAsB;YAuCtB,sBAAsB;IAoBpC,OAAO,CAAC,yBAAyB;IA+KjC,OAAO,CAAC,sBAAsB;IA0J9B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,sBAAsB;YAmBhB,mBAAmB;IA4PjC,OAAO,CAAC,qBAAqB;YAqBf,oBAAoB;YAuBpB,qBAAqB;YA4DrB,YAAY;YAkBZ,YAAY;YA6BZ,aAAa;YA4Bb,gBAAgB;YAsPhB,YAAY;YAqBZ,sBAAsB;YAKtB,cAAc;YAmCd,YAAY;YAsEZ,iBAAiB;YAYjB,mBAAmB;YAiCnB,eAAe;YAqBf,eAAe;YAYf,sBAAsB;YAyCtB,kBAAkB;YA4ClB,eAAe;YASf,uBAAuB;YAevB,gBAAgB;YAkDhB,iBAAiB;YAqCjB,iBAAiB;IA4B/B,OAAO,CAAC,eAAe;CAGxB"}
1
+ {"version":3,"file":"project-extender.d.ts","sourceRoot":"","sources":["../../src/services/project-extender.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CA8Bd;IAEI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B7B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B9C,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YA4CpF,gBAAgB;YAyDhB,mBAAmB;YAuMnB,QAAQ;YAyCR,sBAAsB;YAuCtB,sBAAsB;IAoBpC,OAAO,CAAC,yBAAyB;IA+KjC,OAAO,CAAC,sBAAsB;IA0J9B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,sBAAsB;YAmBhB,mBAAmB;IA4PjC,OAAO,CAAC,qBAAqB;YAqBf,oBAAoB;YAuBpB,qBAAqB;YA4DrB,YAAY;YAkBZ,YAAY;YA6BZ,aAAa;YA4Bb,gBAAgB;YAsPhB,YAAY;YAqBZ,sBAAsB;YAKtB,cAAc;YAmCd,YAAY;YAsEZ,iBAAiB;YAYjB,mBAAmB;YAiCnB,eAAe;YAqBf,eAAe;YAYf,sBAAsB;YAyCtB,kBAAkB;YA4ClB,eAAe;YASf,uBAAuB;YAevB,gBAAgB;YAkDhB,iBAAiB;YAqCjB,iBAAiB;IA4B/B,OAAO,CAAC,eAAe;CAGxB"}