nestjs-ddd-cli 2.2.0 → 3.2.1

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.
Files changed (254) hide show
  1. package/README.md +247 -408
  2. package/ddd.schema.json +111 -0
  3. package/dist/commands/aggregate-validator.d.ts +9 -0
  4. package/dist/commands/aggregate-validator.js +953 -0
  5. package/dist/commands/aggregate-validator.js.map +1 -0
  6. package/dist/commands/ai-assist.d.ts +8 -0
  7. package/dist/commands/ai-assist.js +337 -0
  8. package/dist/commands/ai-assist.js.map +1 -0
  9. package/dist/commands/api-contracts.d.ts +9 -0
  10. package/dist/commands/api-contracts.js +1368 -0
  11. package/dist/commands/api-contracts.js.map +1 -0
  12. package/dist/commands/api-docs.d.ts +8 -0
  13. package/dist/commands/api-docs.js +408 -0
  14. package/dist/commands/api-docs.js.map +1 -0
  15. package/dist/commands/api-versioning.d.ts +11 -0
  16. package/dist/commands/api-versioning.js +643 -0
  17. package/dist/commands/api-versioning.js.map +1 -0
  18. package/dist/commands/audit-logging.d.ts +9 -0
  19. package/dist/commands/audit-logging.js +1129 -0
  20. package/dist/commands/audit-logging.js.map +1 -0
  21. package/dist/commands/batch-generate.d.ts +10 -0
  22. package/dist/commands/batch-generate.js +405 -0
  23. package/dist/commands/batch-generate.js.map +1 -0
  24. package/dist/commands/caching-strategies.d.ts +9 -0
  25. package/dist/commands/caching-strategies.js +874 -0
  26. package/dist/commands/caching-strategies.js.map +1 -0
  27. package/dist/commands/code-analyzer.d.ts +42 -0
  28. package/dist/commands/code-analyzer.js +474 -0
  29. package/dist/commands/code-analyzer.js.map +1 -0
  30. package/dist/commands/database-seeding.d.ts +6 -0
  31. package/dist/commands/database-seeding.js +621 -0
  32. package/dist/commands/database-seeding.js.map +1 -0
  33. package/dist/commands/db-optimization.d.ts +7 -0
  34. package/dist/commands/db-optimization.js +687 -0
  35. package/dist/commands/db-optimization.js.map +1 -0
  36. package/dist/commands/dependency-graph.d.ts +6 -0
  37. package/dist/commands/dependency-graph.js +329 -0
  38. package/dist/commands/dependency-graph.js.map +1 -0
  39. package/dist/commands/doctor-enhanced.d.ts +22 -0
  40. package/dist/commands/doctor-enhanced.js +543 -0
  41. package/dist/commands/doctor-enhanced.js.map +1 -0
  42. package/dist/commands/doctor.d.ts +4 -0
  43. package/dist/commands/doctor.js +151 -0
  44. package/dist/commands/doctor.js.map +1 -0
  45. package/dist/commands/env-manager.d.ts +6 -0
  46. package/dist/commands/env-manager.js +419 -0
  47. package/dist/commands/env-manager.js.map +1 -0
  48. package/dist/commands/event-sourcing-full.d.ts +10 -0
  49. package/dist/commands/event-sourcing-full.js +1107 -0
  50. package/dist/commands/event-sourcing-full.js.map +1 -0
  51. package/dist/commands/feature-flags.d.ts +9 -0
  52. package/dist/commands/feature-flags.js +824 -0
  53. package/dist/commands/feature-flags.js.map +1 -0
  54. package/dist/commands/filter-dsl.d.ts +10 -0
  55. package/dist/commands/filter-dsl.js +1407 -0
  56. package/dist/commands/filter-dsl.js.map +1 -0
  57. package/dist/commands/generate-all.js +485 -32
  58. package/dist/commands/generate-all.js.map +1 -1
  59. package/dist/commands/generate-deployment.d.ts +8 -0
  60. package/dist/commands/generate-deployment.js +746 -0
  61. package/dist/commands/generate-deployment.js.map +1 -0
  62. package/dist/commands/generate-domain-service.d.ts +14 -0
  63. package/dist/commands/generate-domain-service.js +796 -0
  64. package/dist/commands/generate-domain-service.js.map +1 -0
  65. package/dist/commands/generate-entity.js +82 -24
  66. package/dist/commands/generate-entity.js.map +1 -1
  67. package/dist/commands/generate-from-schema.d.ts +56 -0
  68. package/dist/commands/generate-from-schema.js +222 -0
  69. package/dist/commands/generate-from-schema.js.map +1 -0
  70. package/dist/commands/generate-orchestrator.d.ts +14 -0
  71. package/dist/commands/generate-orchestrator.js +887 -0
  72. package/dist/commands/generate-orchestrator.js.map +1 -0
  73. package/dist/commands/generate-repository.d.ts +14 -0
  74. package/dist/commands/generate-repository.js +1019 -0
  75. package/dist/commands/generate-repository.js.map +1 -0
  76. package/dist/commands/generate-shared.d.ts +4 -0
  77. package/dist/commands/generate-shared.js +388 -0
  78. package/dist/commands/generate-shared.js.map +1 -0
  79. package/dist/commands/generate-value-object.d.ts +32 -0
  80. package/dist/commands/generate-value-object.js +700 -0
  81. package/dist/commands/generate-value-object.js.map +1 -0
  82. package/dist/commands/graphql-subscriptions.d.ts +6 -0
  83. package/dist/commands/graphql-subscriptions.js +607 -0
  84. package/dist/commands/graphql-subscriptions.js.map +1 -0
  85. package/dist/commands/graphql-types.d.ts +5 -0
  86. package/dist/commands/graphql-types.js +423 -0
  87. package/dist/commands/graphql-types.js.map +1 -0
  88. package/dist/commands/health-probes-advanced.d.ts +6 -0
  89. package/dist/commands/health-probes-advanced.js +655 -0
  90. package/dist/commands/health-probes-advanced.js.map +1 -0
  91. package/dist/commands/i18n-setup.d.ts +10 -0
  92. package/dist/commands/i18n-setup.js +677 -0
  93. package/dist/commands/i18n-setup.js.map +1 -0
  94. package/dist/commands/init-config.d.ts +6 -0
  95. package/dist/commands/init-config.js +370 -0
  96. package/dist/commands/init-config.js.map +1 -0
  97. package/dist/commands/init-project.js +56 -6
  98. package/dist/commands/init-project.js.map +1 -1
  99. package/dist/commands/interactive-scaffold.d.ts +5 -0
  100. package/dist/commands/interactive-scaffold.js +271 -0
  101. package/dist/commands/interactive-scaffold.js.map +1 -0
  102. package/dist/commands/metrics-prometheus.d.ts +6 -0
  103. package/dist/commands/metrics-prometheus.js +681 -0
  104. package/dist/commands/metrics-prometheus.js.map +1 -0
  105. package/dist/commands/migration-engine.d.ts +6 -0
  106. package/dist/commands/migration-engine.js +446 -0
  107. package/dist/commands/migration-engine.js.map +1 -0
  108. package/dist/commands/migration.d.ts +12 -0
  109. package/dist/commands/migration.js +484 -0
  110. package/dist/commands/migration.js.map +1 -0
  111. package/dist/commands/monorepo.d.ts +8 -0
  112. package/dist/commands/monorepo.js +483 -0
  113. package/dist/commands/monorepo.js.map +1 -0
  114. package/dist/commands/multi-database.d.ts +5 -0
  115. package/dist/commands/multi-database.js +439 -0
  116. package/dist/commands/multi-database.js.map +1 -0
  117. package/dist/commands/observability-tracing.d.ts +10 -0
  118. package/dist/commands/observability-tracing.js +740 -0
  119. package/dist/commands/observability-tracing.js.map +1 -0
  120. package/dist/commands/openapi-export.d.ts +8 -0
  121. package/dist/commands/openapi-export.js +359 -0
  122. package/dist/commands/openapi-export.js.map +1 -0
  123. package/dist/commands/perf-analyzer.d.ts +8 -0
  124. package/dist/commands/perf-analyzer.js +423 -0
  125. package/dist/commands/perf-analyzer.js.map +1 -0
  126. package/dist/commands/rate-limiting.d.ts +10 -0
  127. package/dist/commands/rate-limiting.js +953 -0
  128. package/dist/commands/rate-limiting.js.map +1 -0
  129. package/dist/commands/recipe-plugin.d.ts +56 -0
  130. package/dist/commands/recipe-plugin.js +315 -0
  131. package/dist/commands/recipe-plugin.js.map +1 -0
  132. package/dist/commands/recipe.d.ts +6 -0
  133. package/dist/commands/recipe.js +3941 -0
  134. package/dist/commands/recipe.js.map +1 -0
  135. package/dist/commands/recipes/elasticsearch.recipe.d.ts +1 -0
  136. package/dist/commands/recipes/elasticsearch.recipe.js +761 -0
  137. package/dist/commands/recipes/elasticsearch.recipe.js.map +1 -0
  138. package/dist/commands/recipes/event-sourcing.recipe.d.ts +1 -0
  139. package/dist/commands/recipes/event-sourcing.recipe.js +889 -0
  140. package/dist/commands/recipes/event-sourcing.recipe.js.map +1 -0
  141. package/dist/commands/recipes/index.d.ts +7 -0
  142. package/dist/commands/recipes/index.js +24 -0
  143. package/dist/commands/recipes/index.js.map +1 -0
  144. package/dist/commands/recipes/message-queue.recipe.d.ts +1 -0
  145. package/dist/commands/recipes/message-queue.recipe.js +706 -0
  146. package/dist/commands/recipes/message-queue.recipe.js.map +1 -0
  147. package/dist/commands/recipes/middleware.recipe.d.ts +1 -0
  148. package/dist/commands/recipes/middleware.recipe.js +383 -0
  149. package/dist/commands/recipes/middleware.recipe.js.map +1 -0
  150. package/dist/commands/recipes/multi-tenancy.recipe.d.ts +1 -0
  151. package/dist/commands/recipes/multi-tenancy.recipe.js +520 -0
  152. package/dist/commands/recipes/multi-tenancy.recipe.js.map +1 -0
  153. package/dist/commands/recipes/oauth2.recipe.d.ts +1 -0
  154. package/dist/commands/recipes/oauth2.recipe.js +472 -0
  155. package/dist/commands/recipes/oauth2.recipe.js.map +1 -0
  156. package/dist/commands/recipes/websocket.recipe.d.ts +1 -0
  157. package/dist/commands/recipes/websocket.recipe.js +453 -0
  158. package/dist/commands/recipes/websocket.recipe.js.map +1 -0
  159. package/dist/commands/resilience-patterns.d.ts +13 -0
  160. package/dist/commands/resilience-patterns.js +1029 -0
  161. package/dist/commands/resilience-patterns.js.map +1 -0
  162. package/dist/commands/security-patterns.d.ts +11 -0
  163. package/dist/commands/security-patterns.js +2233 -0
  164. package/dist/commands/security-patterns.js.map +1 -0
  165. package/dist/commands/template-debug.d.ts +27 -0
  166. package/dist/commands/template-debug.js +388 -0
  167. package/dist/commands/template-debug.js.map +1 -0
  168. package/dist/commands/test-factory-full.d.ts +9 -0
  169. package/dist/commands/test-factory-full.js +1570 -0
  170. package/dist/commands/test-factory-full.js.map +1 -0
  171. package/dist/commands/test-scaffold.d.ts +7 -0
  172. package/dist/commands/test-scaffold.js +621 -0
  173. package/dist/commands/test-scaffold.js.map +1 -0
  174. package/dist/index.js +1088 -0
  175. package/dist/index.js.map +1 -1
  176. package/dist/templates/ai-context/CLAUDE.md.hbs +158 -0
  177. package/dist/templates/ai-context/conventions.md.hbs +154 -0
  178. package/dist/templates/command/create-command.hbs +6 -14
  179. package/dist/templates/command/delete-command.hbs +19 -0
  180. package/dist/templates/command/update-command.hbs +24 -0
  181. package/dist/templates/controller/controller.hbs +64 -17
  182. package/dist/templates/dto/create-dto.hbs +29 -5
  183. package/dist/templates/dto/filter-dto.hbs +52 -0
  184. package/dist/templates/dto/filter-query.dto.hbs +148 -0
  185. package/dist/templates/dto/paginated-response.dto.hbs +29 -0
  186. package/dist/templates/dto/pagination-query.dto.hbs +30 -0
  187. package/dist/templates/dto/response-dto.hbs +38 -0
  188. package/dist/templates/dto/update-dto.hbs +11 -0
  189. package/dist/templates/entity/entity.hbs +32 -1
  190. package/dist/templates/event/domain-event.hbs +33 -7
  191. package/dist/templates/event/event-handler.hbs +40 -0
  192. package/dist/templates/exception/base-exceptions.hbs +69 -0
  193. package/dist/templates/exception/entity-not-found.exception.hbs +7 -0
  194. package/dist/templates/mapper/mapper.hbs +49 -24
  195. package/dist/templates/module/module.hbs +34 -10
  196. package/dist/templates/orm-entity/orm-entity.hbs +63 -12
  197. package/dist/templates/prisma/prisma-mapper.hbs +71 -0
  198. package/dist/templates/prisma/prisma-repository.hbs +114 -0
  199. package/dist/templates/prisma/prisma-schema.hbs +20 -0
  200. package/dist/templates/prisma/prisma-service.hbs +51 -0
  201. package/dist/templates/query/get-all.query.hbs +50 -0
  202. package/dist/templates/query/get-by-id.query.hbs +31 -0
  203. package/dist/templates/repository/repository.hbs +55 -13
  204. package/dist/templates/resolver/graphql-input.hbs +54 -0
  205. package/dist/templates/resolver/graphql-type.hbs +58 -0
  206. package/dist/templates/resolver/pagination-args.hbs +33 -0
  207. package/dist/templates/resolver/resolver.hbs +62 -0
  208. package/dist/templates/shared/prisma-query-builder.util.hbs +189 -0
  209. package/dist/templates/shared/query-builder.util.hbs +218 -0
  210. package/dist/templates/test/controller.spec.hbs +124 -0
  211. package/dist/templates/test/repository.spec.hbs +158 -0
  212. package/dist/templates/test/usecase.spec.hbs +116 -0
  213. package/dist/templates/usecase/create-usecase.hbs +19 -7
  214. package/dist/templates/usecase/delete-usecase.hbs +17 -0
  215. package/dist/templates/usecase/update-usecase.hbs +31 -0
  216. package/dist/utils/config.utils.d.ts +45 -0
  217. package/dist/utils/config.utils.js +211 -0
  218. package/dist/utils/config.utils.js.map +1 -0
  219. package/dist/utils/error.utils.d.ts +145 -0
  220. package/dist/utils/error.utils.js +422 -0
  221. package/dist/utils/error.utils.js.map +1 -0
  222. package/dist/utils/field.utils.d.ts +54 -0
  223. package/dist/utils/field.utils.js +389 -0
  224. package/dist/utils/field.utils.js.map +1 -0
  225. package/dist/utils/file.utils.d.ts +19 -8
  226. package/dist/utils/file.utils.js +135 -4
  227. package/dist/utils/file.utils.js.map +1 -1
  228. package/dist/utils/idempotency.utils.d.ts +123 -0
  229. package/dist/utils/idempotency.utils.js +444 -0
  230. package/dist/utils/idempotency.utils.js.map +1 -0
  231. package/dist/utils/naming.utils.js +26 -3
  232. package/dist/utils/naming.utils.js.map +1 -1
  233. package/dist/utils/performance.utils.d.ts +37 -0
  234. package/dist/utils/performance.utils.js +158 -0
  235. package/dist/utils/performance.utils.js.map +1 -0
  236. package/dist/utils/relation.utils.d.ts +92 -0
  237. package/dist/utils/relation.utils.js +388 -0
  238. package/dist/utils/relation.utils.js.map +1 -0
  239. package/dist/utils/rollback.utils.d.ts +49 -0
  240. package/dist/utils/rollback.utils.js +306 -0
  241. package/dist/utils/rollback.utils.js.map +1 -0
  242. package/dist/utils/schema.utils.d.ts +123 -0
  243. package/dist/utils/schema.utils.js +419 -0
  244. package/dist/utils/schema.utils.js.map +1 -0
  245. package/dist/utils/security.utils.d.ts +57 -0
  246. package/dist/utils/security.utils.js +315 -0
  247. package/dist/utils/security.utils.js.map +1 -0
  248. package/dist/utils/template-engine.utils.d.ts +80 -0
  249. package/dist/utils/template-engine.utils.js +463 -0
  250. package/dist/utils/template-engine.utils.js.map +1 -0
  251. package/dist/utils/validation-registry.utils.d.ts +160 -0
  252. package/dist/utils/validation-registry.utils.js +526 -0
  253. package/dist/utils/validation-registry.utils.js.map +1 -0
  254. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-dsl.js","sourceRoot":"","sources":["../../src/commands/filter-dsl.ts"],"names":[],"mappings":"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"}
@@ -41,64 +41,183 @@ const path = __importStar(require("path"));
41
41
  const chalk_1 = __importDefault(require("chalk"));
42
42
  const generate_module_1 = require("./generate-module");
43
43
  const generate_entity_1 = require("./generate-entity");
44
- const generate_usecase_1 = require("./generate-usecase");
45
44
  const file_utils_1 = require("../utils/file.utils");
46
45
  const naming_utils_1 = require("../utils/naming.utils");
47
46
  const dependency_utils_1 = require("../utils/dependency.utils");
48
47
  async function generateAll(entityName, options) {
49
- console.log(chalk_1.default.blue(`🚀 Generating complete scaffolding for: ${entityName}`));
48
+ console.log(chalk_1.default.blue(`\n🚀 Generating complete scaffolding for: ${entityName}`));
49
+ const orm = options.orm || 'typeorm';
50
50
  // Check if we need to install dependencies
51
- const requiredDeps = ['@nestjs/cqrs', 'class-validator', 'class-transformer'];
51
+ const requiredDeps = ['@nestjs/cqrs', 'class-validator', 'class-transformer', '@nestjs/swagger'];
52
+ if (orm === 'prisma') {
53
+ requiredDeps.push('@prisma/client', 'prisma');
54
+ }
55
+ else {
56
+ requiredDeps.push('typeorm', '@nestjs/typeorm');
57
+ }
52
58
  if (options.installDeps) {
53
59
  await (0, dependency_utils_1.installDependencies)(options.path || process.cwd(), requiredDeps);
54
60
  }
55
61
  const moduleName = options.module || entityName;
56
62
  const basePath = options.path || process.cwd();
57
63
  const modulePath = (0, file_utils_1.getModulePath)(basePath, moduleName);
64
+ const fieldsString = options.fields || '';
58
65
  // Check if module exists, create if not
59
66
  const moduleFilePath = path.join(modulePath, `${(0, naming_utils_1.toKebabCase)(moduleName)}.module.ts`);
60
67
  if (!(await (0, file_utils_1.fileExists)(moduleFilePath))) {
61
- console.log(chalk_1.default.yellow(`Module ${moduleName} doesn't exist. Creating...`));
68
+ console.log(chalk_1.default.yellow(` Module ${moduleName} doesn't exist. Creating...`));
62
69
  await (0, generate_module_1.generateModule)(moduleName, options);
63
70
  }
71
+ // Prepare template data with fields
72
+ const templateData = (0, file_utils_1.prepareTemplateData)(entityName, moduleName, fieldsString);
64
73
  // Generate entity with all related files
65
- await (0, generate_entity_1.generateEntity)(entityName, { ...options, module: moduleName });
66
- // Generate CRUD use cases
67
- const useCases = ['Create', 'Update', 'Delete'];
68
- for (const action of useCases) {
69
- const useCaseName = `${action}${entityName}`;
70
- await (0, generate_usecase_1.generateUseCase)(useCaseName, { ...options, module: moduleName });
74
+ await (0, generate_entity_1.generateEntity)(entityName, { ...options, module: moduleName, fields: fieldsString, orm, _fromGenerateAll: true });
75
+ // Generate PrismaService if using Prisma
76
+ if (orm === 'prisma') {
77
+ await generatePrismaService(basePath);
71
78
  }
79
+ // Generate CRUD commands
80
+ console.log(chalk_1.default.cyan(' Generating commands...'));
81
+ await generateCommand('create', entityName, modulePath, templateData);
82
+ await generateCommand('update', entityName, modulePath, templateData);
83
+ await generateCommand('delete', entityName, modulePath, templateData);
84
+ // Generate use cases
85
+ console.log(chalk_1.default.cyan(' Generating use cases...'));
86
+ await generateUseCase('create', entityName, modulePath, templateData);
87
+ await generateUseCase('update', entityName, modulePath, templateData);
88
+ await generateUseCase('delete', entityName, modulePath, templateData);
89
+ // Generate queries
90
+ console.log(chalk_1.default.cyan(' Generating queries...'));
91
+ await generateQueryHandler('get-by-id', entityName, modulePath, templateData);
92
+ await generateQueryHandler('get-all', entityName, modulePath, templateData);
93
+ // Generate DTOs
94
+ console.log(chalk_1.default.cyan(' Generating DTOs...'));
95
+ await generateDto('create', entityName, modulePath, templateData);
96
+ await generateDto('update', entityName, modulePath, templateData);
97
+ await generateDto('response', entityName, modulePath, templateData);
98
+ await generatePaginationDtos(modulePath);
72
99
  // Generate controller
73
- const templateData = (0, file_utils_1.prepareTemplateData)(entityName, moduleName);
100
+ console.log(chalk_1.default.cyan(' Generating controller...'));
74
101
  const controllerTemplatePath = path.join(__dirname, '../templates/controller/controller.hbs');
75
102
  const controllerOutputPath = path.join(modulePath, 'application/controllers', `${(0, naming_utils_1.toKebabCase)(entityName)}.controller.ts`);
76
103
  await (0, file_utils_1.generateFromTemplate)(controllerTemplatePath, controllerOutputPath, templateData);
77
- // Generate migration file
78
- await generateMigration(entityName, basePath);
104
+ // Generate migration file or Prisma schema snippet
105
+ if (orm === 'prisma') {
106
+ console.log(chalk_1.default.cyan(' Generating Prisma schema snippet...'));
107
+ await generatePrismaSchemaSnippet(entityName, basePath, templateData);
108
+ }
109
+ else {
110
+ console.log(chalk_1.default.cyan(' Generating migration...'));
111
+ await generateMigration(entityName, basePath, templateData);
112
+ }
113
+ // Generate barrel exports
114
+ console.log(chalk_1.default.cyan(' Generating barrel exports...'));
115
+ await generateBarrelExports(entityName, modulePath, orm);
116
+ // Generate tests if requested
117
+ if (options.withTests) {
118
+ console.log(chalk_1.default.cyan(' Generating tests...'));
119
+ await generateTests(entityName, modulePath, templateData);
120
+ }
121
+ // Generate GraphQL files if requested
122
+ if (options.withGraphql) {
123
+ console.log(chalk_1.default.cyan(' Generating GraphQL resolvers and types...'));
124
+ await generateGraphQL(entityName, modulePath, templateData);
125
+ }
79
126
  console.log(chalk_1.default.green(`\n✅ Complete scaffolding generated successfully!`));
80
- console.log(chalk_1.default.cyan(`\n📁 Generated files:`));
81
- console.log(` Module: ${modulePath}`);
82
- console.log(` Entity: ${entityName}`);
83
- console.log(` Use Cases: Create, Update, Delete`);
84
- console.log(` Controller: ${entityName}Controller`);
85
- console.log(` Repository: ${entityName}Repository`);
86
- console.log(` Mapper: ${entityName}Mapper`);
87
- console.log(chalk_1.default.yellow(`\n⚠️ Next steps:`));
88
- console.log(` 1. Update the index.ts files in each directory`);
89
- console.log(` 2. Add properties to your entity and DTOs`);
90
- console.log(` 3. Update the mapper with proper field mappings`);
91
- console.log(` 4. Run the migration to create the database table`);
92
- console.log(` 5. Import ${moduleName}Module in your app.module.ts`);
127
+ console.log(chalk_1.default.cyan(`\n📁 Generated structure:`));
128
+ console.log(` ${chalk_1.default.white('Module:')} ${modulePath}`);
129
+ console.log(` ${chalk_1.default.white('Entity:')} ${entityName}`);
130
+ console.log(` ${chalk_1.default.white('ORM:')} ${orm === 'prisma' ? 'Prisma' : 'TypeORM'}`);
131
+ console.log(` ${chalk_1.default.white('Commands:')} Create, Update, Delete`);
132
+ console.log(` ${chalk_1.default.white('Queries:')} GetById, GetAll (paginated)`);
133
+ console.log(` ${chalk_1.default.white('Use Cases:')} Create, Update, Delete`);
134
+ console.log(` ${chalk_1.default.white('DTOs:')} Create, Update, Response, Pagination`);
135
+ console.log(` ${chalk_1.default.white('Controller:')} Full CRUD REST endpoints`);
136
+ console.log(` ${chalk_1.default.white('Repository:')} With pagination support`);
137
+ console.log(` ${chalk_1.default.white('Mapper:')} Domain ${orm === 'prisma' ? 'Prisma' : 'ORM'} ↔ Response`);
138
+ if (options.withGraphql) {
139
+ console.log(` ${chalk_1.default.white('GraphQL:')} Resolver, Types, Inputs`);
140
+ }
141
+ if (templateData.hasFields) {
142
+ console.log(chalk_1.default.green(`\n✨ Fields generated: ${templateData.fields?.map(f => f.name).join(', ')}`));
143
+ }
144
+ console.log(chalk_1.default.yellow(`\n📋 Next steps:`));
145
+ console.log(` 1. ${templateData.hasFields ? 'Review' : 'Add properties to'} your entity and DTOs`);
146
+ if (orm === 'prisma') {
147
+ console.log(` 2. Add the generated model to your ${chalk_1.default.cyan('prisma/schema.prisma')}`);
148
+ console.log(` 3. Run: ${chalk_1.default.cyan('npx prisma migrate dev --name add_' + (0, naming_utils_1.toKebabCase)(entityName))}`);
149
+ console.log(` 4. Run: ${chalk_1.default.cyan('npx prisma generate')}`);
150
+ }
151
+ else {
152
+ console.log(` 2. Run the migration: ${chalk_1.default.cyan('npm run migration:run')}`);
153
+ }
154
+ console.log(` ${orm === 'prisma' ? '5' : '3'}. Import ${(0, naming_utils_1.toPascalCase)(moduleName)}Module in your app.module.ts`);
155
+ console.log(` ${orm === 'prisma' ? '6' : '4'}. Start your server and test the API at ${chalk_1.default.cyan(`/${(0, naming_utils_1.toKebabCase)(entityName)}s`)}`);
156
+ }
157
+ async function generateCommand(action, entityName, modulePath, templateData) {
158
+ const templatePath = path.join(__dirname, `../templates/command/${action}-command.hbs`);
159
+ const outputPath = path.join(modulePath, 'application/commands', `${action}-${(0, naming_utils_1.toKebabCase)(entityName)}.command.ts`);
160
+ await (0, file_utils_1.generateFromTemplate)(templatePath, outputPath, templateData);
161
+ }
162
+ async function generateUseCase(action, entityName, modulePath, templateData) {
163
+ const templatePath = path.join(__dirname, `../templates/usecase/${action}-usecase.hbs`);
164
+ const outputPath = path.join(modulePath, 'application/domain/usecases', `${action}-${(0, naming_utils_1.toKebabCase)(entityName)}.use-case.ts`);
165
+ await (0, file_utils_1.generateFromTemplate)(templatePath, outputPath, templateData);
93
166
  }
94
- async function generateMigration(entityName, basePath) {
167
+ async function generateQueryHandler(type, entityName, modulePath, templateData) {
168
+ const templatePath = path.join(__dirname, `../templates/query/${type}.query.hbs`);
169
+ const outputPath = path.join(modulePath, 'application/queries', `${type}-${(0, naming_utils_1.toKebabCase)(entityName)}${type === 'get-all' ? 's' : ''}.query.ts`);
170
+ await (0, file_utils_1.generateFromTemplate)(templatePath, outputPath, templateData);
171
+ }
172
+ async function generateDto(type, entityName, modulePath, templateData) {
173
+ const templateMap = {
174
+ create: 'create-dto.hbs',
175
+ update: 'update-dto.hbs',
176
+ response: 'response-dto.hbs',
177
+ };
178
+ const outputDirMap = {
179
+ create: 'requests',
180
+ update: 'requests',
181
+ response: 'responses',
182
+ };
183
+ const fileNameMap = {
184
+ create: `create-${(0, naming_utils_1.toKebabCase)(entityName)}.dto.ts`,
185
+ update: `update-${(0, naming_utils_1.toKebabCase)(entityName)}.dto.ts`,
186
+ response: `${(0, naming_utils_1.toKebabCase)(entityName)}.response.dto.ts`,
187
+ };
188
+ const templatePath = path.join(__dirname, `../templates/dto/${templateMap[type]}`);
189
+ const outputPath = path.join(modulePath, `application/dto/${outputDirMap[type]}`, fileNameMap[type]);
190
+ await (0, file_utils_1.generateFromTemplate)(templatePath, outputPath, templateData);
191
+ }
192
+ async function generatePaginationDtos(modulePath) {
193
+ // Generate pagination query DTO
194
+ const paginationQueryTemplatePath = path.join(__dirname, '../templates/dto/pagination-query.dto.hbs');
195
+ const paginationQueryOutputPath = path.join(modulePath, 'application/dto/requests', 'pagination.query.dto.ts');
196
+ if (!(await (0, file_utils_1.fileExists)(paginationQueryOutputPath))) {
197
+ await (0, file_utils_1.generateFromTemplate)(paginationQueryTemplatePath, paginationQueryOutputPath, (0, file_utils_1.prepareTemplateData)('Pagination', 'shared'));
198
+ }
199
+ // Generate paginated response DTO
200
+ const paginatedResponseTemplatePath = path.join(__dirname, '../templates/dto/paginated-response.dto.hbs');
201
+ const paginatedResponseOutputPath = path.join(modulePath, 'application/dto/responses', 'paginated.response.dto.ts');
202
+ if (!(await (0, file_utils_1.fileExists)(paginatedResponseOutputPath))) {
203
+ await (0, file_utils_1.generateFromTemplate)(paginatedResponseTemplatePath, paginatedResponseOutputPath, (0, file_utils_1.prepareTemplateData)('Paginated', 'shared'));
204
+ }
205
+ }
206
+ async function generateMigration(entityName, basePath, templateData) {
95
207
  const timestamp = Date.now();
96
- const tableName = (0, naming_utils_1.toKebabCase)(entityName).replace(/-/g, '_') + 's';
208
+ const tableName = templateData.tableName;
97
209
  const migrationName = `create_${tableName}_table`;
98
210
  const fileName = `${timestamp}-${migrationName}.ts`;
211
+ const fieldsColumns = templateData.migrationColumns || ` // Add your custom columns here
212
+ // Example:
213
+ // {
214
+ // name: "name",
215
+ // type: "varchar",
216
+ // isNullable: false,
217
+ // },`;
99
218
  const content = `import { MigrationInterface, QueryRunner, Table } from "typeorm";
100
219
 
101
- export class Create${entityName}Table${timestamp} implements MigrationInterface {
220
+ export class Create${(0, naming_utils_1.toPascalCase)(entityName)}Table${timestamp} implements MigrationInterface {
102
221
  public async up(queryRunner: QueryRunner): Promise<void> {
103
222
  await queryRunner.createTable(
104
223
  new Table({
@@ -111,6 +230,7 @@ export class Create${entityName}Table${timestamp} implements MigrationInterface
111
230
  generationStrategy: "uuid",
112
231
  default: "uuid_generate_v4()",
113
232
  },
233
+ ${fieldsColumns}
114
234
  {
115
235
  name: "is_active",
116
236
  type: "boolean",
@@ -131,7 +251,6 @@ export class Create${entityName}Table${timestamp} implements MigrationInterface
131
251
  type: "timestamp",
132
252
  isNullable: true,
133
253
  },
134
- // Add your custom columns here
135
254
  ],
136
255
  }),
137
256
  true,
@@ -144,7 +263,341 @@ export class Create${entityName}Table${timestamp} implements MigrationInterface
144
263
  }
145
264
  `;
146
265
  const migrationPath = path.join(basePath, 'src/migrations', fileName);
147
- await require('../utils/file.utils').writeFile(migrationPath, content);
148
- console.log(chalk_1.default.green(` Migration: ${fileName}`));
266
+ await (0, file_utils_1.writeFile)(migrationPath, content);
267
+ console.log(chalk_1.default.green(` Migration: ${fileName}`));
268
+ }
269
+ async function generateBarrelExports(entityName, modulePath, orm = 'typeorm') {
270
+ const entityNameKebab = (0, naming_utils_1.toKebabCase)(entityName);
271
+ const entityNamePascal = (0, naming_utils_1.toPascalCase)(entityName);
272
+ const isPrisma = orm === 'prisma';
273
+ // Commands index
274
+ const commandsIndexPath = path.join(modulePath, 'application/commands/index.ts');
275
+ const commandsIndexContent = `export * from './create-${entityNameKebab}.command';
276
+ export * from './update-${entityNameKebab}.command';
277
+ export * from './delete-${entityNameKebab}.command';
278
+
279
+ import { Create${entityNamePascal}Handler } from './create-${entityNameKebab}.command';
280
+ import { Update${entityNamePascal}Handler } from './update-${entityNameKebab}.command';
281
+ import { Delete${entityNamePascal}Handler } from './delete-${entityNameKebab}.command';
282
+
283
+ export const CommandHandlers = [
284
+ Create${entityNamePascal}Handler,
285
+ Update${entityNamePascal}Handler,
286
+ Delete${entityNamePascal}Handler,
287
+ ];
288
+ `;
289
+ await (0, file_utils_1.writeFile)(commandsIndexPath, commandsIndexContent);
290
+ // Queries index
291
+ const queriesIndexPath = path.join(modulePath, 'application/queries/index.ts');
292
+ const entityNamePluralPascal = (0, naming_utils_1.toPascalCase)(entityName) + 's';
293
+ const queriesIndexContent = `export * from './get-${entityNameKebab}-by-id.query';
294
+ export * from './get-all-${entityNameKebab}s.query';
295
+
296
+ import { Get${entityNamePascal}ByIdHandler } from './get-${entityNameKebab}-by-id.query';
297
+ import { GetAll${entityNamePluralPascal}Handler } from './get-all-${entityNameKebab}s.query';
298
+
299
+ export const Queries = [
300
+ Get${entityNamePascal}ByIdHandler,
301
+ GetAll${entityNamePluralPascal}Handler,
302
+ ];
303
+ `;
304
+ await (0, file_utils_1.writeFile)(queriesIndexPath, queriesIndexContent);
305
+ // Use cases index
306
+ const useCasesIndexPath = path.join(modulePath, 'application/domain/usecases/index.ts');
307
+ const useCasesIndexContent = `export * from './create-${entityNameKebab}.use-case';
308
+ export * from './update-${entityNameKebab}.use-case';
309
+ export * from './delete-${entityNameKebab}.use-case';
310
+
311
+ import { Create${entityNamePascal}UseCase } from './create-${entityNameKebab}.use-case';
312
+ import { Update${entityNamePascal}UseCase } from './update-${entityNameKebab}.use-case';
313
+ import { Delete${entityNamePascal}UseCase } from './delete-${entityNameKebab}.use-case';
314
+
315
+ export const UseCases = [
316
+ Create${entityNamePascal}UseCase,
317
+ Update${entityNamePascal}UseCase,
318
+ Delete${entityNamePascal}UseCase,
319
+ ];
320
+ `;
321
+ await (0, file_utils_1.writeFile)(useCasesIndexPath, useCasesIndexContent);
322
+ // DTOs index
323
+ const dtosIndexPath = path.join(modulePath, 'application/dto/index.ts');
324
+ const dtosIndexContent = `export * from './requests';
325
+ export * from './responses';
326
+ `;
327
+ await (0, file_utils_1.writeFile)(dtosIndexPath, dtosIndexContent);
328
+ // Requests index
329
+ const requestsIndexPath = path.join(modulePath, 'application/dto/requests/index.ts');
330
+ const requestsIndexContent = `export * from './create-${entityNameKebab}.dto';
331
+ export * from './update-${entityNameKebab}.dto';
332
+ export * from './pagination.query.dto';
333
+ `;
334
+ await (0, file_utils_1.writeFile)(requestsIndexPath, requestsIndexContent);
335
+ // Responses index
336
+ const responsesIndexPath = path.join(modulePath, 'application/dto/responses/index.ts');
337
+ const responsesIndexContent = `export * from './${entityNameKebab}.response.dto';
338
+ export * from './paginated.response.dto';
339
+ `;
340
+ await (0, file_utils_1.writeFile)(responsesIndexPath, responsesIndexContent);
341
+ // Controllers index
342
+ const controllersIndexPath = path.join(modulePath, 'application/controllers/index.ts');
343
+ const controllersIndexContent = `export * from './${entityNameKebab}.controller';
344
+
345
+ import { ${entityNamePascal}Controller } from './${entityNameKebab}.controller';
346
+
347
+ export const Controllers = [${entityNamePascal}Controller];
348
+ `;
349
+ await (0, file_utils_1.writeFile)(controllersIndexPath, controllersIndexContent);
350
+ // Entities index
351
+ const entitiesIndexPath = path.join(modulePath, 'application/domain/entities/index.ts');
352
+ const entitiesIndexContent = `export * from './${entityNameKebab}.entity';
353
+ `;
354
+ await (0, file_utils_1.writeFile)(entitiesIndexPath, entitiesIndexContent);
355
+ // Repositories index
356
+ const repositoriesIndexPath = path.join(modulePath, 'infrastructure/repositories/index.ts');
357
+ const repositoriesIndexContent = `export * from './${entityNameKebab}.repository';
358
+
359
+ import { ${entityNamePascal}Repository } from './${entityNameKebab}.repository';
360
+
361
+ export const Repositories = [${entityNamePascal}Repository];
362
+ `;
363
+ await (0, file_utils_1.writeFile)(repositoriesIndexPath, repositoriesIndexContent);
364
+ // Mappers index
365
+ const mappersIndexPath = path.join(modulePath, 'infrastructure/mappers/index.ts');
366
+ const mappersIndexContent = `export * from './${entityNameKebab}.mapper';
367
+
368
+ import { ${entityNamePascal}Mapper } from './${entityNameKebab}.mapper';
369
+
370
+ export const Mappers = [${entityNamePascal}Mapper];
371
+ `;
372
+ await (0, file_utils_1.writeFile)(mappersIndexPath, mappersIndexContent);
373
+ // ORM entities index (TypeORM only)
374
+ if (!isPrisma) {
375
+ const ormEntitiesIndexPath = path.join(modulePath, 'infrastructure/orm-entities/index.ts');
376
+ const ormEntitiesIndexContent = `export * from './${entityNameKebab}.orm-entity';
377
+
378
+ import { ${entityNamePascal}OrmEntity } from './${entityNameKebab}.orm-entity';
379
+
380
+ export const OrmEntities = [${entityNamePascal}OrmEntity];
381
+ `;
382
+ await (0, file_utils_1.writeFile)(ormEntitiesIndexPath, ormEntitiesIndexContent);
383
+ }
384
+ // Services index (empty for now)
385
+ const servicesIndexPath = path.join(modulePath, 'application/domain/services/index.ts');
386
+ const servicesIndexContent = `// Export your domain services here
387
+ // import { YourService } from './your.service';
388
+ // export const Services = [YourService];
389
+
390
+ export const Services: any[] = [];
391
+ `;
392
+ await (0, file_utils_1.writeFile)(servicesIndexPath, servicesIndexContent);
393
+ // Events index (empty for now)
394
+ const eventsIndexPath = path.join(modulePath, 'application/domain/events/index.ts');
395
+ const eventsIndexContent = `// Export your domain events here
396
+ // export * from './your-event.event';
397
+ `;
398
+ await (0, file_utils_1.writeFile)(eventsIndexPath, eventsIndexContent);
399
+ }
400
+ async function generateTests(entityName, modulePath, templateData) {
401
+ const entityNameKebab = (0, naming_utils_1.toKebabCase)(entityName);
402
+ // Repository test
403
+ const repoTestTemplatePath = path.join(__dirname, '../templates/test/repository.spec.hbs');
404
+ const repoTestOutputPath = path.join(modulePath, 'infrastructure/repositories', `${entityNameKebab}.repository.spec.ts`);
405
+ await (0, file_utils_1.generateFromTemplate)(repoTestTemplatePath, repoTestOutputPath, templateData);
406
+ console.log(chalk_1.default.green(` ✓ Repository test`));
407
+ // Use case tests
408
+ const useCaseTestTemplatePath = path.join(__dirname, '../templates/test/usecase.spec.hbs');
409
+ const useCaseTestOutputPath = path.join(modulePath, 'application/domain/usecases', `${entityNameKebab}.use-case.spec.ts`);
410
+ await (0, file_utils_1.generateFromTemplate)(useCaseTestTemplatePath, useCaseTestOutputPath, templateData);
411
+ console.log(chalk_1.default.green(` ✓ Use case tests`));
412
+ // Controller test
413
+ const controllerTestTemplatePath = path.join(__dirname, '../templates/test/controller.spec.hbs');
414
+ const controllerTestOutputPath = path.join(modulePath, 'application/controllers', `${entityNameKebab}.controller.spec.ts`);
415
+ await (0, file_utils_1.generateFromTemplate)(controllerTestTemplatePath, controllerTestOutputPath, templateData);
416
+ console.log(chalk_1.default.green(` ✓ Controller test`));
417
+ }
418
+ async function generateGraphQL(entityName, modulePath, templateData) {
419
+ const entityNameKebab = (0, naming_utils_1.toKebabCase)(entityName);
420
+ const entityNamePascal = (0, naming_utils_1.toPascalCase)(entityName);
421
+ const entityNamePluralKebab = (0, naming_utils_1.toKebabCase)(templateData.entityNamePlural);
422
+ // Create GraphQL directories
423
+ const graphqlPath = path.join(modulePath, 'application/graphql');
424
+ const typesPath = path.join(graphqlPath, 'types');
425
+ const inputsPath = path.join(graphqlPath, 'inputs');
426
+ const argsPath = path.join(graphqlPath, 'args');
427
+ // Generate resolver
428
+ const resolverTemplatePath = path.join(__dirname, '../templates/resolver/resolver.hbs');
429
+ const resolverOutputPath = path.join(graphqlPath, `${entityNameKebab}.resolver.ts`);
430
+ await (0, file_utils_1.generateFromTemplate)(resolverTemplatePath, resolverOutputPath, templateData);
431
+ console.log(chalk_1.default.green(` ✓ Resolver`));
432
+ // Generate GraphQL type
433
+ const typeTemplatePath = path.join(__dirname, '../templates/resolver/graphql-type.hbs');
434
+ const typeOutputPath = path.join(typesPath, `${entityNameKebab}.type.ts`);
435
+ await (0, file_utils_1.generateFromTemplate)(typeTemplatePath, typeOutputPath, templateData);
436
+ console.log(chalk_1.default.green(` ✓ GraphQL Type`));
437
+ // Generate GraphQL inputs
438
+ const inputTemplatePath = path.join(__dirname, '../templates/resolver/graphql-input.hbs');
439
+ const inputOutputPath = path.join(inputsPath, `${entityNameKebab}.input.ts`);
440
+ await (0, file_utils_1.generateFromTemplate)(inputTemplatePath, inputOutputPath, templateData);
441
+ console.log(chalk_1.default.green(` ✓ GraphQL Inputs`));
442
+ // Generate pagination args (if not exists)
443
+ const paginationArgsPath = path.join(argsPath, 'pagination.args.ts');
444
+ if (!(await (0, file_utils_1.fileExists)(paginationArgsPath))) {
445
+ const paginationArgsTemplatePath = path.join(__dirname, '../templates/resolver/pagination-args.hbs');
446
+ await (0, file_utils_1.generateFromTemplate)(paginationArgsTemplatePath, paginationArgsPath, templateData);
447
+ console.log(chalk_1.default.green(` ✓ Pagination Args`));
448
+ }
449
+ // Generate barrel exports
450
+ const typesIndexContent = `export * from "./${entityNameKebab}.type";
451
+ `;
452
+ await (0, file_utils_1.writeFile)(path.join(typesPath, 'index.ts'), typesIndexContent);
453
+ const inputsIndexContent = `export * from "./${entityNameKebab}.input";
454
+ `;
455
+ await (0, file_utils_1.writeFile)(path.join(inputsPath, 'index.ts'), inputsIndexContent);
456
+ const argsIndexContent = `export * from "./pagination.args";
457
+ `;
458
+ await (0, file_utils_1.writeFile)(path.join(argsPath, 'index.ts'), argsIndexContent);
459
+ const graphqlIndexContent = `export * from "./${entityNameKebab}.resolver";
460
+ export * from "./types";
461
+ export * from "./inputs";
462
+ export * from "./args";
463
+
464
+ import { ${entityNamePascal}Resolver } from "./${entityNameKebab}.resolver";
465
+
466
+ export const Resolvers = [${entityNamePascal}Resolver];
467
+ `;
468
+ await (0, file_utils_1.writeFile)(path.join(graphqlPath, 'index.ts'), graphqlIndexContent);
469
+ }
470
+ async function generatePrismaService(basePath) {
471
+ const prismaServicePath = path.join(basePath, 'src/prisma/prisma.service.ts');
472
+ if (await (0, file_utils_1.fileExists)(prismaServicePath)) {
473
+ console.log(chalk_1.default.yellow(` PrismaService already exists. Skipping...`));
474
+ return;
475
+ }
476
+ const content = `import { Injectable, OnModuleInit, OnModuleDestroy } from "@nestjs/common";
477
+ import { PrismaClient } from "@prisma/client";
478
+
479
+ @Injectable()
480
+ export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
481
+ constructor() {
482
+ super({
483
+ log: process.env.NODE_ENV === "development"
484
+ ? ["query", "info", "warn", "error"]
485
+ : ["error"],
486
+ });
487
+ }
488
+
489
+ async onModuleInit() {
490
+ await this.$connect();
491
+ }
492
+
493
+ async onModuleDestroy() {
494
+ await this.$disconnect();
495
+ }
496
+
497
+ /**
498
+ * Execute operations in a transaction
499
+ */
500
+ async executeInTransaction<T>(
501
+ fn: (prisma: Omit<PrismaClient, "$connect" | "$disconnect" | "$on" | "$transaction" | "$use">) => Promise<T>,
502
+ ): Promise<T> {
503
+ return this.$transaction(fn);
504
+ }
505
+
506
+ /**
507
+ * Clean database (useful for testing)
508
+ */
509
+ async cleanDatabase() {
510
+ if (process.env.NODE_ENV !== "test") {
511
+ throw new Error("cleanDatabase can only be called in test environment");
512
+ }
513
+
514
+ const models = Reflect.ownKeys(this).filter(
515
+ (key) => typeof key === "string" && !key.startsWith("_") && !key.startsWith("$"),
516
+ );
517
+
518
+ for (const model of models) {
519
+ try {
520
+ await (this as any)[model].deleteMany();
521
+ } catch (error) {
522
+ // Ignore if model doesn't support deleteMany
523
+ }
524
+ }
525
+ }
526
+ }
527
+ `;
528
+ await (0, file_utils_1.writeFile)(prismaServicePath, content);
529
+ console.log(chalk_1.default.green(` ✓ PrismaService`));
530
+ // Also generate prisma.module.ts
531
+ const prismaModulePath = path.join(basePath, 'src/prisma/prisma.module.ts');
532
+ if (!(await (0, file_utils_1.fileExists)(prismaModulePath))) {
533
+ const moduleContent = `import { Global, Module } from "@nestjs/common";
534
+ import { PrismaService } from "./prisma.service";
535
+
536
+ @Global()
537
+ @Module({
538
+ providers: [PrismaService],
539
+ exports: [PrismaService],
540
+ })
541
+ export class PrismaModule {}
542
+ `;
543
+ await (0, file_utils_1.writeFile)(prismaModulePath, moduleContent);
544
+ console.log(chalk_1.default.green(` ✓ PrismaModule`));
545
+ }
546
+ // Generate index.ts
547
+ const indexPath = path.join(basePath, 'src/prisma/index.ts');
548
+ if (!(await (0, file_utils_1.fileExists)(indexPath))) {
549
+ const indexContent = `export * from "./prisma.service";
550
+ export * from "./prisma.module";
551
+ `;
552
+ await (0, file_utils_1.writeFile)(indexPath, indexContent);
553
+ }
554
+ }
555
+ async function generatePrismaSchemaSnippet(entityName, basePath, templateData) {
556
+ const tableName = templateData.tableName;
557
+ const entityNamePascal = (0, naming_utils_1.toPascalCase)(entityName);
558
+ // Generate fields for Prisma schema
559
+ let fieldsContent = '';
560
+ if (templateData.fields && templateData.fields.length > 0) {
561
+ fieldsContent = templateData.fields
562
+ .map((f) => {
563
+ let line = ` ${f.snakeCase.padEnd(20)} ${f.prismaType}`;
564
+ if (f.isOptional)
565
+ line += '?';
566
+ if (f.isUnique)
567
+ line += ' @unique';
568
+ return line;
569
+ })
570
+ .join('\n');
571
+ }
572
+ else {
573
+ fieldsContent = ` // Add your fields here
574
+ // name String
575
+ // email String @unique`;
576
+ }
577
+ const content = `// =============================================================
578
+ // Prisma Schema Snippet for ${entityNamePascal}
579
+ // Add this to your prisma/schema.prisma file
580
+ // =============================================================
581
+
582
+ model ${entityNamePascal} {
583
+ id String @id @default(uuid())
584
+ ${fieldsContent}
585
+ is_active Boolean @default(true)
586
+ created_at DateTime @default(now())
587
+ updated_at DateTime @updatedAt
588
+ deleted_at DateTime?
589
+
590
+ @@map("${tableName}")
591
+ }
592
+
593
+ // =============================================================
594
+ // After adding, run:
595
+ // npx prisma migrate dev --name add_${(0, naming_utils_1.toKebabCase)(entityName)}
596
+ // npx prisma generate
597
+ // =============================================================
598
+ `;
599
+ const snippetPath = path.join(basePath, `prisma/snippets/${(0, naming_utils_1.toKebabCase)(entityName)}.prisma`);
600
+ await (0, file_utils_1.writeFile)(snippetPath, content);
601
+ console.log(chalk_1.default.green(` ✓ Prisma schema snippet: prisma/snippets/${(0, naming_utils_1.toKebabCase)(entityName)}.prisma`));
149
602
  }
150
603
  //# sourceMappingURL=generate-all.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/commands/generate-all.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/commands/generate-all.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface DeploymentOptions {
2
+ path?: string;
3
+ docker?: boolean;
4
+ compose?: boolean;
5
+ ci?: 'github' | 'gitlab' | 'none';
6
+ kubernetes?: boolean;
7
+ }
8
+ export declare function generateDeployment(options: DeploymentOptions): Promise<void>;