@veloxts/cli 0.4.0 → 0.4.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 (139) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/generate.d.ts +17 -0
  4. package/dist/commands/generate.d.ts.map +1 -0
  5. package/dist/commands/generate.js +219 -0
  6. package/dist/commands/generate.js.map +1 -0
  7. package/dist/commands/migrate.d.ts +8 -3
  8. package/dist/commands/migrate.d.ts.map +1 -1
  9. package/dist/commands/migrate.js +17 -123
  10. package/dist/commands/migrate.js.map +1 -1
  11. package/dist/generators/base.d.ts +76 -0
  12. package/dist/generators/base.d.ts.map +1 -0
  13. package/dist/generators/base.js +271 -0
  14. package/dist/generators/base.js.map +1 -0
  15. package/dist/generators/generators/index.d.ts +17 -0
  16. package/dist/generators/generators/index.d.ts.map +1 -0
  17. package/dist/generators/generators/index.js +43 -0
  18. package/dist/generators/generators/index.js.map +1 -0
  19. package/dist/generators/generators/migration.d.ts +43 -0
  20. package/dist/generators/generators/migration.d.ts.map +1 -0
  21. package/dist/generators/generators/migration.js +121 -0
  22. package/dist/generators/generators/migration.js.map +1 -0
  23. package/dist/generators/generators/model.d.ts +38 -0
  24. package/dist/generators/generators/model.d.ts.map +1 -0
  25. package/dist/generators/generators/model.js +108 -0
  26. package/dist/generators/generators/model.js.map +1 -0
  27. package/dist/generators/generators/procedure.d.ts +37 -0
  28. package/dist/generators/generators/procedure.d.ts.map +1 -0
  29. package/dist/generators/generators/procedure.js +99 -0
  30. package/dist/generators/generators/procedure.js.map +1 -0
  31. package/dist/generators/generators/resource.d.ts +29 -0
  32. package/dist/generators/generators/resource.d.ts.map +1 -0
  33. package/dist/generators/generators/resource.js +124 -0
  34. package/dist/generators/generators/resource.js.map +1 -0
  35. package/dist/generators/generators/schema.d.ts +28 -0
  36. package/dist/generators/generators/schema.d.ts.map +1 -0
  37. package/dist/generators/generators/schema.js +83 -0
  38. package/dist/generators/generators/schema.js.map +1 -0
  39. package/dist/generators/generators/test.d.ts +28 -0
  40. package/dist/generators/generators/test.d.ts.map +1 -0
  41. package/dist/generators/generators/test.js +96 -0
  42. package/dist/generators/generators/test.js.map +1 -0
  43. package/dist/generators/index.d.ts +16 -0
  44. package/dist/generators/index.d.ts.map +1 -0
  45. package/dist/generators/index.js +16 -0
  46. package/dist/generators/index.js.map +1 -0
  47. package/dist/generators/registry.d.ts +97 -0
  48. package/dist/generators/registry.d.ts.map +1 -0
  49. package/dist/generators/registry.js +253 -0
  50. package/dist/generators/registry.js.map +1 -0
  51. package/dist/generators/templates/migration.d.ts +23 -0
  52. package/dist/generators/templates/migration.d.ts.map +1 -0
  53. package/dist/generators/templates/migration.js +389 -0
  54. package/dist/generators/templates/migration.js.map +1 -0
  55. package/dist/generators/templates/model.d.ts +37 -0
  56. package/dist/generators/templates/model.d.ts.map +1 -0
  57. package/dist/generators/templates/model.js +374 -0
  58. package/dist/generators/templates/model.js.map +1 -0
  59. package/dist/generators/templates/procedure.d.ts +25 -0
  60. package/dist/generators/templates/procedure.d.ts.map +1 -0
  61. package/dist/generators/templates/procedure.js +274 -0
  62. package/dist/generators/templates/procedure.js.map +1 -0
  63. package/dist/generators/templates/resource.d.ts +34 -0
  64. package/dist/generators/templates/resource.d.ts.map +1 -0
  65. package/dist/generators/templates/resource.js +550 -0
  66. package/dist/generators/templates/resource.js.map +1 -0
  67. package/dist/generators/templates/schema.d.ts +33 -0
  68. package/dist/generators/templates/schema.d.ts.map +1 -0
  69. package/dist/generators/templates/schema.js +248 -0
  70. package/dist/generators/templates/schema.js.map +1 -0
  71. package/dist/generators/templates/test.d.ts +31 -0
  72. package/dist/generators/templates/test.d.ts.map +1 -0
  73. package/dist/generators/templates/test.js +882 -0
  74. package/dist/generators/templates/test.js.map +1 -0
  75. package/dist/generators/types.d.ts +211 -0
  76. package/dist/generators/types.d.ts.map +1 -0
  77. package/dist/generators/types.js +54 -0
  78. package/dist/generators/types.js.map +1 -0
  79. package/dist/generators/utils/filesystem.d.ts +68 -0
  80. package/dist/generators/utils/filesystem.d.ts.map +1 -0
  81. package/dist/generators/utils/filesystem.js +217 -0
  82. package/dist/generators/utils/filesystem.js.map +1 -0
  83. package/dist/generators/utils/naming.d.ts +122 -0
  84. package/dist/generators/utils/naming.d.ts.map +1 -0
  85. package/dist/generators/utils/naming.js +198 -0
  86. package/dist/generators/utils/naming.js.map +1 -0
  87. package/dist/index.d.ts +4 -0
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +4 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/migrations/commands/fresh.d.ts +11 -0
  92. package/dist/migrations/commands/fresh.d.ts.map +1 -0
  93. package/dist/migrations/commands/fresh.js +164 -0
  94. package/dist/migrations/commands/fresh.js.map +1 -0
  95. package/dist/migrations/commands/index.d.ts +11 -0
  96. package/dist/migrations/commands/index.d.ts.map +1 -0
  97. package/dist/migrations/commands/index.js +11 -0
  98. package/dist/migrations/commands/index.js.map +1 -0
  99. package/dist/migrations/commands/reset.d.ts +11 -0
  100. package/dist/migrations/commands/reset.d.ts.map +1 -0
  101. package/dist/migrations/commands/reset.js +258 -0
  102. package/dist/migrations/commands/reset.js.map +1 -0
  103. package/dist/migrations/commands/rollback.d.ts +11 -0
  104. package/dist/migrations/commands/rollback.d.ts.map +1 -0
  105. package/dist/migrations/commands/rollback.js +241 -0
  106. package/dist/migrations/commands/rollback.js.map +1 -0
  107. package/dist/migrations/commands/run.d.ts +11 -0
  108. package/dist/migrations/commands/run.d.ts.map +1 -0
  109. package/dist/migrations/commands/run.js +183 -0
  110. package/dist/migrations/commands/run.js.map +1 -0
  111. package/dist/migrations/commands/status.d.ts +11 -0
  112. package/dist/migrations/commands/status.d.ts.map +1 -0
  113. package/dist/migrations/commands/status.js +154 -0
  114. package/dist/migrations/commands/status.js.map +1 -0
  115. package/dist/migrations/errors.d.ts +74 -0
  116. package/dist/migrations/errors.d.ts.map +1 -0
  117. package/dist/migrations/errors.js +155 -0
  118. package/dist/migrations/errors.js.map +1 -0
  119. package/dist/migrations/index.d.ts +13 -0
  120. package/dist/migrations/index.d.ts.map +1 -0
  121. package/dist/migrations/index.js +17 -0
  122. package/dist/migrations/index.js.map +1 -0
  123. package/dist/migrations/loader.d.ts +44 -0
  124. package/dist/migrations/loader.d.ts.map +1 -0
  125. package/dist/migrations/loader.js +181 -0
  126. package/dist/migrations/loader.js.map +1 -0
  127. package/dist/migrations/prisma-wrapper.d.ts +60 -0
  128. package/dist/migrations/prisma-wrapper.d.ts.map +1 -0
  129. package/dist/migrations/prisma-wrapper.js +184 -0
  130. package/dist/migrations/prisma-wrapper.js.map +1 -0
  131. package/dist/migrations/rollback-runner.d.ts +40 -0
  132. package/dist/migrations/rollback-runner.d.ts.map +1 -0
  133. package/dist/migrations/rollback-runner.js +191 -0
  134. package/dist/migrations/rollback-runner.js.map +1 -0
  135. package/dist/migrations/types.d.ts +214 -0
  136. package/dist/migrations/types.d.ts.map +1 -0
  137. package/dist/migrations/types.js +19 -0
  138. package/dist/migrations/types.js.map +1 -0
  139. package/package.json +29 -8
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Migration Template
3
+ *
4
+ * Generates Prisma migration files with common SQL patterns.
5
+ */
6
+ /**
7
+ * Parse migration name to determine type and extract details
8
+ *
9
+ * Supported patterns:
10
+ * - create_users → CREATE TABLE users
11
+ * - add_email_to_users → ALTER TABLE ADD COLUMN
12
+ * - remove_name_from_users → ALTER TABLE DROP COLUMN
13
+ * - rename_users_to_accounts → RENAME TABLE
14
+ * - drop_users → DROP TABLE
15
+ */
16
+ function parseMigrationName(name) {
17
+ const lower = name.toLowerCase();
18
+ // create_<table>
19
+ if (lower.startsWith('create_')) {
20
+ return {
21
+ type: 'create',
22
+ table: name.slice(7), // remove 'create_'
23
+ };
24
+ }
25
+ // add_<column>_to_<table>
26
+ const addMatch = lower.match(/^add_(.+)_to_(.+)$/);
27
+ if (addMatch) {
28
+ const column = addMatch[1];
29
+ const table = addMatch[2];
30
+ if (column && table) {
31
+ return {
32
+ type: 'add',
33
+ column,
34
+ table,
35
+ };
36
+ }
37
+ }
38
+ // remove_<column>_from_<table>
39
+ const removeMatch = lower.match(/^remove_(.+)_from_(.+)$/);
40
+ if (removeMatch) {
41
+ const column = removeMatch[1];
42
+ const table = removeMatch[2];
43
+ if (column && table) {
44
+ return {
45
+ type: 'remove',
46
+ column,
47
+ table,
48
+ };
49
+ }
50
+ }
51
+ // rename_<old>_to_<new>
52
+ const renameMatch = lower.match(/^rename_(.+)_to_(.+)$/);
53
+ if (renameMatch) {
54
+ const oldName = renameMatch[1];
55
+ const newName = renameMatch[2];
56
+ if (oldName && newName) {
57
+ return {
58
+ type: 'rename',
59
+ oldName,
60
+ newName,
61
+ };
62
+ }
63
+ }
64
+ // drop_<table>
65
+ if (lower.startsWith('drop_')) {
66
+ return {
67
+ type: 'drop',
68
+ table: name.slice(5), // remove 'drop_'
69
+ };
70
+ }
71
+ // Custom migration
72
+ return { type: 'custom' };
73
+ }
74
+ // ============================================================================
75
+ // SQL Generators
76
+ // ============================================================================
77
+ /**
78
+ * Generate CREATE TABLE SQL
79
+ */
80
+ function generateCreateTableSql(table, database) {
81
+ const idType = database === 'postgresql' ? 'UUID' : 'TEXT';
82
+ const idDefault = database === 'postgresql' ? 'DEFAULT gen_random_uuid()' : '';
83
+ const timestampType = database === 'mysql' ? 'DATETIME' : 'TIMESTAMP';
84
+ const timestampDefault = database === 'sqlite'
85
+ ? "DEFAULT (datetime('now'))"
86
+ : database === 'postgresql'
87
+ ? 'DEFAULT CURRENT_TIMESTAMP'
88
+ : 'DEFAULT CURRENT_TIMESTAMP';
89
+ return `-- CreateTable
90
+ CREATE TABLE "${table}" (
91
+ "id" ${idType} PRIMARY KEY ${idDefault},
92
+ -- TODO: Add your columns here
93
+ -- "name" TEXT NOT NULL,
94
+ -- "email" TEXT NOT NULL UNIQUE,
95
+ "created_at" ${timestampType} NOT NULL ${timestampDefault},
96
+ "updated_at" ${timestampType} NOT NULL ${timestampDefault}
97
+ );
98
+
99
+ -- CreateIndex (optional)
100
+ -- CREATE UNIQUE INDEX "${table}_email_key" ON "${table}"("email");
101
+ `;
102
+ }
103
+ /**
104
+ * Generate ADD COLUMN SQL
105
+ */
106
+ function generateAddColumnSql(table, column, _database) {
107
+ return `-- AddColumn
108
+ ALTER TABLE "${table}" ADD COLUMN "${column}" TEXT;
109
+ -- TODO: Adjust the column type as needed
110
+ -- Common types: TEXT, INTEGER, BOOLEAN, TIMESTAMP, UUID
111
+ -- Add NOT NULL if required (may need DEFAULT value)
112
+ `;
113
+ }
114
+ /**
115
+ * Generate DROP COLUMN SQL
116
+ */
117
+ function generateRemoveColumnSql(table, column, database) {
118
+ if (database === 'sqlite') {
119
+ return `-- RemoveColumn
120
+ -- SQLite doesn't support DROP COLUMN directly.
121
+ -- You need to recreate the table without the column.
122
+ -- See: https://www.sqlite.org/lang_altertable.html
123
+
124
+ -- Step 1: Create new table without the column
125
+ -- CREATE TABLE "${table}_new" (
126
+ -- "id" TEXT PRIMARY KEY,
127
+ -- -- all columns except "${column}"
128
+ -- "created_at" TIMESTAMP NOT NULL,
129
+ -- "updated_at" TIMESTAMP NOT NULL
130
+ -- );
131
+
132
+ -- Step 2: Copy data
133
+ -- INSERT INTO "${table}_new" SELECT id, ..., created_at, updated_at FROM "${table}";
134
+
135
+ -- Step 3: Drop old table
136
+ -- DROP TABLE "${table}";
137
+
138
+ -- Step 4: Rename new table
139
+ -- ALTER TABLE "${table}_new" RENAME TO "${table}";
140
+ `;
141
+ }
142
+ return `-- RemoveColumn
143
+ ALTER TABLE "${table}" DROP COLUMN "${column}";
144
+ `;
145
+ }
146
+ /**
147
+ * Generate RENAME TABLE SQL
148
+ */
149
+ function generateRenameTableSql(oldName, newName, database) {
150
+ if (database === 'mysql') {
151
+ return `-- RenameTable
152
+ RENAME TABLE "${oldName}" TO "${newName}";
153
+ `;
154
+ }
155
+ return `-- RenameTable
156
+ ALTER TABLE "${oldName}" RENAME TO "${newName}";
157
+ `;
158
+ }
159
+ /**
160
+ * Generate DROP TABLE SQL
161
+ */
162
+ function generateDropTableSql(table) {
163
+ return `-- DropTable
164
+ DROP TABLE IF EXISTS "${table}";
165
+ `;
166
+ }
167
+ /**
168
+ * Generate custom migration SQL
169
+ */
170
+ function generateCustomSql(name) {
171
+ return `-- Migration: ${name}
172
+ --
173
+ -- Write your custom SQL here.
174
+ -- This migration was created because the name didn't match
175
+ -- any known patterns (create_*, add_*_to_*, remove_*_from_*, etc.)
176
+
177
+ -- Example operations:
178
+ -- CREATE TABLE "example" (...);
179
+ -- ALTER TABLE "example" ADD COLUMN "field" TEXT;
180
+ -- CREATE INDEX "example_field_idx" ON "example"("field");
181
+ -- UPDATE "example" SET "field" = 'value' WHERE condition;
182
+ `;
183
+ }
184
+ // ============================================================================
185
+ // Rollback SQL Generators
186
+ // ============================================================================
187
+ /**
188
+ * Generate DROP TABLE SQL for rollback of CREATE TABLE
189
+ */
190
+ function generateRollbackCreateTableSql(table) {
191
+ return `-- RollbackCreateTable
192
+ DROP TABLE IF EXISTS "${table}";
193
+ `;
194
+ }
195
+ /**
196
+ * Generate DROP COLUMN SQL for rollback of ADD COLUMN
197
+ */
198
+ function generateRollbackAddColumnSql(table, column, database) {
199
+ if (database === 'sqlite') {
200
+ return `-- RollbackAddColumn
201
+ -- SQLite doesn't support DROP COLUMN directly in older versions.
202
+ -- For SQLite 3.35.0+ you can use:
203
+ ALTER TABLE "${table}" DROP COLUMN "${column}";
204
+
205
+ -- For older SQLite versions, you need to recreate the table.
206
+ -- See: https://www.sqlite.org/lang_altertable.html
207
+ `;
208
+ }
209
+ return `-- RollbackAddColumn
210
+ ALTER TABLE "${table}" DROP COLUMN "${column}";
211
+ `;
212
+ }
213
+ /**
214
+ * Generate ADD COLUMN SQL for rollback of REMOVE COLUMN
215
+ * Note: Data loss warning - column data cannot be recovered
216
+ */
217
+ function generateRollbackRemoveColumnSql(table, column) {
218
+ return `-- RollbackRemoveColumn
219
+ -- WARNING: Original column data cannot be recovered!
220
+ -- You must manually specify the correct column type.
221
+ ALTER TABLE "${table}" ADD COLUMN "${column}" TEXT;
222
+ -- TODO: Adjust the column type to match the original schema
223
+ `;
224
+ }
225
+ /**
226
+ * Generate reverse RENAME TABLE SQL for rollback
227
+ */
228
+ function generateRollbackRenameTableSql(oldName, newName, database) {
229
+ // Reverse the rename: newName -> oldName
230
+ if (database === 'mysql') {
231
+ return `-- RollbackRenameTable
232
+ RENAME TABLE "${newName}" TO "${oldName}";
233
+ `;
234
+ }
235
+ return `-- RollbackRenameTable
236
+ ALTER TABLE "${newName}" RENAME TO "${oldName}";
237
+ `;
238
+ }
239
+ /**
240
+ * Generate warning for rollback of DROP TABLE
241
+ * Data loss - cannot recover dropped table
242
+ */
243
+ function generateRollbackDropTableSql(table) {
244
+ return `-- RollbackDropTable
245
+ -- WARNING: Cannot automatically rollback DROP TABLE!
246
+ -- The original table data and schema are lost.
247
+ -- You must manually recreate the table with its original schema:
248
+ --
249
+ -- CREATE TABLE "${table}" (
250
+ -- "id" TEXT PRIMARY KEY,
251
+ -- -- TODO: Add original columns here
252
+ -- "created_at" TIMESTAMP NOT NULL,
253
+ -- "updated_at" TIMESTAMP NOT NULL
254
+ -- );
255
+ `;
256
+ }
257
+ /**
258
+ * Generate rollback SQL for custom migrations
259
+ */
260
+ function generateRollbackCustomSql(name) {
261
+ return `-- Rollback Migration: ${name}
262
+ --
263
+ -- Write your rollback SQL here.
264
+ -- This should reverse the operations in migration.sql
265
+ --
266
+ -- Example rollback operations:
267
+ -- DROP TABLE IF EXISTS "example";
268
+ -- ALTER TABLE "example" DROP COLUMN "field";
269
+ -- DROP INDEX "example_field_idx";
270
+ `;
271
+ }
272
+ // ============================================================================
273
+ // Template Functions
274
+ // ============================================================================
275
+ /**
276
+ * Generate migration SQL based on name and database type
277
+ */
278
+ function generateMigrationSql(name, database) {
279
+ const parsed = parseMigrationName(name);
280
+ switch (parsed.type) {
281
+ case 'create':
282
+ return generateCreateTableSql(parsed.table, database);
283
+ case 'add':
284
+ return generateAddColumnSql(parsed.table, parsed.column, database);
285
+ case 'remove':
286
+ return generateRemoveColumnSql(parsed.table, parsed.column, database);
287
+ case 'rename':
288
+ return generateRenameTableSql(parsed.oldName, parsed.newName, database);
289
+ case 'drop':
290
+ return generateDropTableSql(parsed.table);
291
+ case 'custom':
292
+ return generateCustomSql(name);
293
+ }
294
+ }
295
+ /**
296
+ * Generate rollback SQL based on name and database type
297
+ */
298
+ function generateRollbackSql(name, database) {
299
+ const parsed = parseMigrationName(name);
300
+ switch (parsed.type) {
301
+ case 'create':
302
+ return generateRollbackCreateTableSql(parsed.table);
303
+ case 'add':
304
+ return generateRollbackAddColumnSql(parsed.table, parsed.column, database);
305
+ case 'remove':
306
+ return generateRollbackRemoveColumnSql(parsed.table, parsed.column);
307
+ case 'rename':
308
+ return generateRollbackRenameTableSql(parsed.oldName, parsed.newName, database);
309
+ case 'drop':
310
+ return generateRollbackDropTableSql(parsed.table);
311
+ case 'custom':
312
+ return generateRollbackCustomSql(name);
313
+ }
314
+ }
315
+ /**
316
+ * Generate timestamp for migration folder name
317
+ */
318
+ function generateTimestamp() {
319
+ const now = new Date();
320
+ const year = now.getFullYear();
321
+ const month = String(now.getMonth() + 1).padStart(2, '0');
322
+ const day = String(now.getDate()).padStart(2, '0');
323
+ const hours = String(now.getHours()).padStart(2, '0');
324
+ const minutes = String(now.getMinutes()).padStart(2, '0');
325
+ const seconds = String(now.getSeconds()).padStart(2, '0');
326
+ return `${year}${month}${day}${hours}${minutes}${seconds}`;
327
+ }
328
+ // ============================================================================
329
+ // Template Export
330
+ // ============================================================================
331
+ /**
332
+ * Migration template
333
+ */
334
+ export const migrationTemplate = (ctx) => {
335
+ return generateMigrationSql(ctx.entity.raw, ctx.options.database);
336
+ };
337
+ /**
338
+ * Generate all files for a migration
339
+ */
340
+ export function generateMigrationFiles(ctx) {
341
+ const timestamp = generateTimestamp();
342
+ // Use raw entity name to preserve original migration name (e.g., create_users)
343
+ const migrationName = ctx.entity.raw;
344
+ const folderName = `${timestamp}_${migrationName}`;
345
+ const upSql = migrationTemplate(ctx);
346
+ const downSql = generateRollbackSql(ctx.entity.raw, ctx.options.database);
347
+ return [
348
+ {
349
+ path: `prisma/migrations/${folderName}/migration.sql`,
350
+ content: upSql,
351
+ },
352
+ {
353
+ path: `prisma/migrations/${folderName}/down.sql`,
354
+ content: downSql,
355
+ },
356
+ ];
357
+ }
358
+ /**
359
+ * Generate post-generation instructions
360
+ */
361
+ export function getMigrationInstructions(migrationName) {
362
+ return `
363
+ 1. Review and customize the generated SQL:
364
+
365
+ Edit prisma/migrations/*_${migrationName}/migration.sql
366
+ Edit prisma/migrations/*_${migrationName}/down.sql (rollback)
367
+
368
+ 2. Apply the migration:
369
+
370
+ For development (with Prisma):
371
+ pnpm db:push
372
+
373
+ For production migrations:
374
+ npx prisma migrate deploy
375
+
376
+ 3. To rollback (if needed):
377
+
378
+ Run the SQL in down.sql manually:
379
+ sqlite3 prisma/dev.db < prisma/migrations/*_${migrationName}/down.sql
380
+
381
+ Or use a database client to execute the rollback SQL.
382
+
383
+ Note: If using Prisma's migration system, you may prefer:
384
+ npx prisma migrate dev --name ${migrationName}
385
+
386
+ This will create a migration with proper Prisma metadata.
387
+ `;
388
+ }
389
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/generators/templates/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Model Template
3
+ *
4
+ * Generates Prisma model, Zod schema, and optionally procedures.
5
+ */
6
+ import type { GeneratedFile, TemplateContext, TemplateFunction } from '../types.js';
7
+ export interface ModelOptions {
8
+ /** Generate CRUD procedures alongside the model */
9
+ crud: boolean;
10
+ /** Include pagination for list operation */
11
+ paginated: boolean;
12
+ /** Include soft delete (deletedAt field) */
13
+ softDelete: boolean;
14
+ /** Include timestamps (createdAt, updatedAt) */
15
+ timestamps: boolean;
16
+ }
17
+ /**
18
+ * Model template - generates Prisma model definition
19
+ */
20
+ export declare const prismaModelTemplate: TemplateFunction<ModelOptions>;
21
+ /**
22
+ * Schema template - generates Zod schema file
23
+ */
24
+ export declare const schemaTemplate: TemplateFunction<ModelOptions>;
25
+ /**
26
+ * Procedures template - generates procedure file
27
+ */
28
+ export declare const proceduresTemplate: TemplateFunction<ModelOptions>;
29
+ /**
30
+ * Generate all files for a model
31
+ */
32
+ export declare function generateModelFiles(ctx: TemplateContext<ModelOptions>): GeneratedFile[];
33
+ /**
34
+ * Generate post-generation instructions
35
+ */
36
+ export declare function getModelInstructions(ctx: TemplateContext<ModelOptions>): string;
37
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/model.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpF,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAC;CACrB;AA4TD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,YAAY,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,YAAY,CAEzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,YAAY,CAE7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,aAAa,EAAE,CAyBtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,MAAM,CAkC/E"}