@nyalajs/cli 1.0.0

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 (37) hide show
  1. package/dist/bin/nyala.d.ts +3 -0
  2. package/dist/bin/nyala.d.ts.map +1 -0
  3. package/dist/bin/nyala.js +190 -0
  4. package/dist/bin/nyala.js.map +1 -0
  5. package/dist/commands/generate.command.d.ts +63 -0
  6. package/dist/commands/generate.command.d.ts.map +1 -0
  7. package/dist/commands/generate.command.js +554 -0
  8. package/dist/commands/generate.command.js.map +1 -0
  9. package/dist/commands/migrate.command.d.ts +15 -0
  10. package/dist/commands/migrate.command.d.ts.map +1 -0
  11. package/dist/commands/migrate.command.js +179 -0
  12. package/dist/commands/migrate.command.js.map +1 -0
  13. package/dist/commands/new.command.d.ts +19 -0
  14. package/dist/commands/new.command.d.ts.map +1 -0
  15. package/dist/commands/new.command.helpers.d.ts +6 -0
  16. package/dist/commands/new.command.helpers.d.ts.map +1 -0
  17. package/dist/commands/new.command.helpers.js +92 -0
  18. package/dist/commands/new.command.helpers.js.map +1 -0
  19. package/dist/commands/new.command.js +515 -0
  20. package/dist/commands/new.command.js.map +1 -0
  21. package/dist/commands/seed.command.d.ts +15 -0
  22. package/dist/commands/seed.command.d.ts.map +1 -0
  23. package/dist/commands/seed.command.js +144 -0
  24. package/dist/commands/seed.command.js.map +1 -0
  25. package/dist/commands/validate.command.d.ts +7 -0
  26. package/dist/commands/validate.command.d.ts.map +1 -0
  27. package/dist/commands/validate.command.js +127 -0
  28. package/dist/commands/validate.command.js.map +1 -0
  29. package/dist/utils/banner.d.ts +5 -0
  30. package/dist/utils/banner.d.ts.map +1 -0
  31. package/dist/utils/banner.js +174 -0
  32. package/dist/utils/banner.js.map +1 -0
  33. package/dist/utils/naming.d.ts +4 -0
  34. package/dist/utils/naming.d.ts.map +1 -0
  35. package/dist/utils/naming.js +33 -0
  36. package/dist/utils/naming.js.map +1 -0
  37. package/package.json +34 -0
@@ -0,0 +1,554 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GenerateCommand = void 0;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const ora_1 = __importDefault(require("ora"));
44
+ const naming_1 = require("../utils/naming");
45
+ /**
46
+ * Generators for the artifact types listed in docs/requirements.md §4.23 /
47
+ * the source SRS §7 "Code Generation". Every generator writes into the
48
+ * app/<type> convention scaffolded by `nyala new` (see new.command.ts).
49
+ *
50
+ * Names may be passed with or without the conventional suffix — both
51
+ * `nyala generate policy User` and `nyala generate policy UserPolicy`
52
+ * produce `app/policies/user.policy.ts` exporting `UserPolicy`.
53
+ *
54
+ * Some artifact types (model, migration, repository, request, event,
55
+ * listener, job, plugin) depend on framework subsystems that don't exist
56
+ * yet (ORM, validation engine, event bus, queue, plugin loader — see
57
+ * docs/requirements.md §4.6/§4.8-4.10/§4.14-16/§5). Those generators still
58
+ * write a real file in the right place so the CLI surface matches the SRS,
59
+ * but the template is a clearly-marked stub rather than working code.
60
+ */
61
+ class GenerateCommand {
62
+ async generateController(name) {
63
+ await this.generateAndRegister(name, this.specs.controller, "controllers");
64
+ }
65
+ async generateService(name) {
66
+ await this.generateAndRegister(name, this.specs.service, "providers");
67
+ }
68
+ async generateModel(name) {
69
+ await this.writeArtifact(name, this.specs.model);
70
+ }
71
+ async generateMigration(name) {
72
+ const spinner = (0, ora_1.default)(`Generating migration: ${name}`).start();
73
+ try {
74
+ const fileName = `${this.timestamp()}_${(0, naming_1.toKebabCase)(name)}`;
75
+ const migrationPath = path.join(process.cwd(), "database/migrations", `${fileName}.ts`);
76
+ await fs.ensureDir(path.dirname(migrationPath));
77
+ await fs.writeFile(migrationPath, this.getMigrationTemplate(name));
78
+ spinner.succeed(`Successfully generated migration: ${name}`);
79
+ console.log(chalk_1.default.green(`\nCreated file:`));
80
+ console.log(chalk_1.default.cyan(` database/migrations/${fileName}.ts`));
81
+ }
82
+ catch (error) {
83
+ spinner.fail("Failed to generate migration");
84
+ console.error(error);
85
+ }
86
+ }
87
+ async generateRepository(name) {
88
+ await this.writeArtifact(name, this.specs.repository);
89
+ }
90
+ async generateRequest(name) {
91
+ await this.writeArtifact(name, this.specs.request);
92
+ }
93
+ async generatePolicy(name) {
94
+ await this.writeArtifact(name, this.specs.policy);
95
+ }
96
+ async generateMiddleware(name) {
97
+ await this.writeArtifact(name, this.specs.middleware);
98
+ }
99
+ async generateEvent(name) {
100
+ await this.writeArtifact(name, this.specs.event);
101
+ }
102
+ async generateListener(name) {
103
+ await this.writeArtifact(name, this.specs.listener);
104
+ }
105
+ async generateJob(name) {
106
+ await this.writeArtifact(name, this.specs.job);
107
+ }
108
+ async generateResource(name) {
109
+ await this.writeArtifact(name, this.specs.resource);
110
+ }
111
+ async generateSeeder(name) {
112
+ await this.writeArtifact(name, this.specs.seeder);
113
+ }
114
+ async generateFactory(name) {
115
+ await this.writeArtifact(name, this.specs.factory);
116
+ }
117
+ async generateDto(name) {
118
+ await this.writeArtifact(name, this.specs.dto);
119
+ }
120
+ async generatePlugin(name) {
121
+ const spinner = (0, ora_1.default)(`Generating plugin: ${name}`).start();
122
+ try {
123
+ const fileName = (0, naming_1.toKebabCase)(name);
124
+ const pluginDir = path.join(process.cwd(), "plugins", fileName);
125
+ if (await fs.pathExists(pluginDir)) {
126
+ spinner.fail(`Plugin ${name} already exists`);
127
+ return;
128
+ }
129
+ await fs.ensureDir(pluginDir);
130
+ await fs.writeFile(path.join(pluginDir, "index.ts"), this.getPluginTemplate(name));
131
+ spinner.succeed(`Successfully generated plugin: ${name}`);
132
+ console.log(chalk_1.default.green(`\nCreated file:`));
133
+ console.log(chalk_1.default.cyan(` plugins/${fileName}/index.ts`));
134
+ }
135
+ catch (error) {
136
+ spinner.fail("Failed to generate plugin");
137
+ console.error(error);
138
+ }
139
+ }
140
+ // --- artifact specs --------------------------------------------------
141
+ specs = {
142
+ controller: {
143
+ label: "controller",
144
+ folder: "controllers",
145
+ suffix: "Controller",
146
+ template: (className, name) => this.getControllerTemplate(className, (0, naming_1.toKebabCase)(name)),
147
+ },
148
+ service: {
149
+ label: "service",
150
+ folder: "services",
151
+ suffix: "Service",
152
+ template: (className) => this.getServiceTemplate(className),
153
+ },
154
+ model: {
155
+ label: "model",
156
+ folder: "models",
157
+ suffix: "",
158
+ template: (className) => this.getModelTemplate(className),
159
+ },
160
+ repository: {
161
+ label: "repository",
162
+ folder: "repositories",
163
+ suffix: "Repository",
164
+ template: (className) => this.getRepositoryTemplate(className),
165
+ },
166
+ request: {
167
+ label: "request",
168
+ folder: "requests",
169
+ suffix: "Request",
170
+ template: (className) => this.getRequestTemplate(className),
171
+ },
172
+ policy: {
173
+ label: "policy",
174
+ folder: "policies",
175
+ suffix: "Policy",
176
+ template: (className, name) => this.getPolicyTemplate(className, name),
177
+ },
178
+ middleware: {
179
+ label: "middleware",
180
+ folder: "middleware",
181
+ suffix: "Middleware",
182
+ template: (className, name) => this.getMiddlewareTemplate(className, name),
183
+ },
184
+ event: {
185
+ label: "event",
186
+ folder: "events",
187
+ suffix: "Event",
188
+ template: (className) => this.getEventTemplate(className),
189
+ },
190
+ listener: {
191
+ label: "listener",
192
+ folder: "listeners",
193
+ suffix: "Listener",
194
+ template: (className) => this.getListenerTemplate(className),
195
+ },
196
+ job: {
197
+ label: "job",
198
+ folder: "jobs",
199
+ suffix: "Job",
200
+ template: (className, name) => this.getJobTemplate(className, name),
201
+ },
202
+ resource: {
203
+ label: "resource",
204
+ folder: "resources",
205
+ suffix: "Resource",
206
+ template: (className) => this.getResourceTemplate(className),
207
+ },
208
+ seeder: {
209
+ label: "seeder",
210
+ folder: "../../database/seeders",
211
+ suffix: "Seeder",
212
+ template: (className) => this.getSeederTemplate(className),
213
+ },
214
+ factory: {
215
+ label: "factory",
216
+ folder: "../../database/factories",
217
+ suffix: "Factory",
218
+ template: (className, name) => this.getFactoryTemplate(className, name),
219
+ },
220
+ dto: {
221
+ label: "dto",
222
+ folder: "dto",
223
+ suffix: "Dto",
224
+ template: (className) => this.getDtoTemplate(className),
225
+ },
226
+ };
227
+ // --- naming ------------------------------------------------------
228
+ /**
229
+ * Strips a conventional suffix if the caller already included it, so
230
+ * `policy User` and `policy UserPolicy` both yield `UserPolicy` / `user`
231
+ * instead of stuttering to `UserPolicyPolicy`.
232
+ */
233
+ normalizeName(name, suffix) {
234
+ const pascal = (0, naming_1.toPascalCase)(name);
235
+ const base = suffix && pascal.endsWith(suffix) ? pascal.slice(0, -suffix.length) : pascal;
236
+ return {
237
+ className: `${base}${suffix}`,
238
+ fileName: (0, naming_1.toKebabCase)(base),
239
+ };
240
+ }
241
+ // --- shared write paths -----------------------------------------------
242
+ async writeArtifact(name, spec) {
243
+ const spinner = (0, ora_1.default)(`Generating ${spec.label}: ${name}`).start();
244
+ try {
245
+ const { className, fileName } = this.normalizeName(name, spec.suffix);
246
+ const artifactPath = path.join(process.cwd(), "app", spec.folder, `${fileName}.${spec.label}.ts`);
247
+ await fs.ensureDir(path.dirname(artifactPath));
248
+ await fs.writeFile(artifactPath, spec.template(className, fileName));
249
+ spinner.succeed(`Successfully generated ${spec.label}: ${name}`);
250
+ console.log(chalk_1.default.green(`\nCreated file:`));
251
+ console.log(chalk_1.default.cyan(` app/${spec.folder}/${fileName}.${spec.label}.ts`));
252
+ }
253
+ catch (error) {
254
+ spinner.fail(`Failed to generate ${spec.label}`);
255
+ console.error(error);
256
+ }
257
+ }
258
+ async generateAndRegister(name, spec, moduleArrayKey) {
259
+ const spinner = (0, ora_1.default)(`Generating ${spec.label}: ${name}`).start();
260
+ try {
261
+ const { className, fileName } = this.normalizeName(name, spec.suffix);
262
+ const artifactPath = path.join(process.cwd(), "app", spec.folder, `${fileName}.${spec.label}.ts`);
263
+ await fs.ensureDir(path.dirname(artifactPath));
264
+ await fs.writeFile(artifactPath, spec.template(className, fileName));
265
+ await this.registerInAppModule(moduleArrayKey, className, `../app/${spec.folder}/${fileName}.${spec.label}`);
266
+ spinner.succeed(`Successfully generated ${spec.label}: ${name}`);
267
+ console.log(chalk_1.default.green(`\nCreated file:`));
268
+ console.log(chalk_1.default.cyan(` app/${spec.folder}/${fileName}.${spec.label}.ts`));
269
+ }
270
+ catch (error) {
271
+ spinner.fail(`Failed to generate ${spec.label}`);
272
+ console.error(error);
273
+ }
274
+ }
275
+ /** Best-effort: appends the import + array entry to bootstrap/app.module.ts. */
276
+ async registerInAppModule(arrayKey, className, importPath) {
277
+ const modulePath = path.join(process.cwd(), "bootstrap/app.module.ts");
278
+ if (!(await fs.pathExists(modulePath))) {
279
+ return;
280
+ }
281
+ let content = await fs.readFile(modulePath, "utf-8");
282
+ const importStatement = `import { ${className} } from "${importPath}";`;
283
+ if (!content.includes(importStatement)) {
284
+ const importBlock = /(^import .*\n)+/m;
285
+ content = importBlock.test(content)
286
+ ? content.replace(importBlock, (match) => `${match}${importStatement}\n`)
287
+ : `${importStatement}\n${content}`;
288
+ }
289
+ const arrayRegex = new RegExp(`(${arrayKey}:\\s*\\[)([^\\]]*)(\\])`);
290
+ content = content.replace(arrayRegex, (_match, open, inner, close) => {
291
+ const items = inner
292
+ .split(",")
293
+ .map((item) => item.trim())
294
+ .filter(Boolean);
295
+ if (!items.includes(className)) {
296
+ items.push(className);
297
+ }
298
+ return `${open}${items.join(", ")}${close}`;
299
+ });
300
+ await fs.writeFile(modulePath, content);
301
+ }
302
+ timestamp() {
303
+ const now = new Date();
304
+ const pad = (n) => String(n).padStart(2, "0");
305
+ return `${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`;
306
+ }
307
+ // --- templates -------------------------------------------------------
308
+ getControllerTemplate(className, fileName) {
309
+ return `import { Controller, Get, Post } from "@nyalajs/core";
310
+
311
+ @Controller("/${fileName}")
312
+ export class ${className} {
313
+ @Get("/")
314
+ findAll() {
315
+ return { message: "This action returns all ${fileName}" };
316
+ }
317
+
318
+ @Post("/")
319
+ create() {
320
+ return { message: "This action creates a new ${fileName}" };
321
+ }
322
+ }
323
+ `;
324
+ }
325
+ getServiceTemplate(className) {
326
+ return `import { Injectable } from "@nyalajs/core";
327
+
328
+ @Injectable()
329
+ export class ${className} {
330
+ // Add your business logic here
331
+ }
332
+ `;
333
+ }
334
+ getModelTemplate(className) {
335
+ return `import { Model, Table, Primary, StringColumn, TimestampColumn } from "@nyalajs/database";
336
+
337
+ @Table("${(0, naming_1.toKebabCase)(className)}s")
338
+ export class ${className} extends Model {
339
+ @Primary()
340
+ @StringColumn()
341
+ id!: string;
342
+
343
+ @TimestampColumn()
344
+ createdAt!: Date;
345
+
346
+ @TimestampColumn()
347
+ updatedAt!: Date;
348
+ }
349
+ `;
350
+ }
351
+ getMigrationTemplate(name) {
352
+ return `import { sql } from "drizzle-orm";
353
+
354
+ export async function up(db: any): Promise<void> {
355
+ // TODO: implement migration for ${name}
356
+ // await db.execute(sql\`CREATE TABLE ...\`);
357
+ }
358
+
359
+ export async function down(db: any): Promise<void> {
360
+ // TODO: reverse migration for ${name}
361
+ }
362
+ `;
363
+ }
364
+ getRepositoryTemplate(className) {
365
+ return `import { Injectable } from "@nyalajs/core";
366
+ import { DatabaseService } from "@nyalajs/database";
367
+
368
+ @Injectable()
369
+ export class ${className} {
370
+ constructor(private readonly dbService: DatabaseService) {}
371
+
372
+ async findAll() {
373
+ // const db = this.dbService.getDb();
374
+ // return await db.select().from(tableName);
375
+ }
376
+
377
+ async findById(id: string | number) {
378
+ // ...
379
+ }
380
+ }
381
+ `;
382
+ }
383
+ getRequestTemplate(className) {
384
+ return `import { z } from "zod";
385
+ import { ApiProperty } from "@nyalajs/http";
386
+
387
+ export const ${className}Schema = z.object({
388
+ // TODO: Define validation rules
389
+ // email: z.string().email(),
390
+ });
391
+
392
+ export class ${className} {
393
+ // @ApiProperty({ description: "Example property", type: "string" })
394
+ // public propertyName!: string;
395
+ }
396
+ `;
397
+ }
398
+ getPolicyTemplate(className, name) {
399
+ return `import { Injectable } from "@nyalajs/core";
400
+ import { Guard, ExecutionContext, ForbiddenException } from "@nyalajs/http";
401
+
402
+ @Injectable()
403
+ export class ${className} implements Guard {
404
+ async canActivate(context: ExecutionContext): Promise<boolean> {
405
+ const user = context.context.metadata.get("user");
406
+
407
+ if (!user) {
408
+ throw new ForbiddenException("Not authorized");
409
+ }
410
+
411
+ // TODO: implement the authorization rule for ${name}
412
+ return true;
413
+ }
414
+ }
415
+ `;
416
+ }
417
+ getMiddlewareTemplate(className, name) {
418
+ return `import { Injectable } from "@nyalajs/core";
419
+ import { ExecutionContext } from "@nyalajs/http";
420
+
421
+ @Injectable()
422
+ export class ${className} {
423
+ async use(ctx: ExecutionContext, next: () => Promise<void>): Promise<void> {
424
+ // TODO: implement ${name} middleware logic
425
+ await next();
426
+ }
427
+ }
428
+ `;
429
+ }
430
+ getEventTemplate(className) {
431
+ return `export class ${className} {
432
+ constructor(public readonly payload: Record<string, unknown> = {}) {}
433
+ }
434
+ `;
435
+ }
436
+ getListenerTemplate(className) {
437
+ return `import { Injectable } from "@nyalajs/core";
438
+ import { EventHandler } from "@nyalajs/events";
439
+
440
+ @Injectable()
441
+ export class ${className} {
442
+ @EventHandler("example.event")
443
+ async handle(event: unknown): Promise<void> {
444
+ // TODO: react to the event
445
+ }
446
+ }
447
+ `;
448
+ }
449
+ getJobTemplate(className, name) {
450
+ return `import { Process } from "@nyalajs/queue";
451
+ import type { Job } from "bullmq";
452
+
453
+ export class ${className} {
454
+ /**
455
+ * Handle the queued job.
456
+ * Dispatch with: dispatch("${name}", "${className}", { ...payload })
457
+ */
458
+ @Process("${name}")
459
+ async handle(job: Job): Promise<void> {
460
+ const data = job.data;
461
+ // TODO: implement background work for ${name}
462
+ console.log("[${className}] Processing job", data);
463
+ }
464
+ }
465
+ `;
466
+ }
467
+ getResourceTemplate(className) {
468
+ return `// A resource shapes a model/entity into the JSON your API returns.
469
+ // Wire it into a controller manually, e.g.:
470
+ // return ${className}.collection(items);
471
+ export class ${className} {
472
+ static make(item: any) {
473
+ return {
474
+ // TODO: pick the fields to expose
475
+ id: item.id,
476
+ };
477
+ }
478
+
479
+ static collection(items: any[]) {
480
+ return items.map((item) => ${className}.make(item));
481
+ }
482
+ }
483
+ `;
484
+ }
485
+ getPluginTemplate(name) {
486
+ const className = (0, naming_1.toPascalCase)(name) + "Plugin";
487
+ return `import { NyalaPlugin, NyalaApplication } from "@nyalajs/core";
488
+
489
+ export default class ${className} implements NyalaPlugin {
490
+ name = "${name}";
491
+
492
+ /**
493
+ * Called once during application boot (before HTTP server starts).
494
+ * Register services, routes, or middleware here.
495
+ */
496
+ async register(app: NyalaApplication): Promise<void> {
497
+ // TODO: register plugin services
498
+ // app.get(SomeService).configure({...});
499
+ console.log("[${name}] Plugin registered.");
500
+ }
501
+
502
+ /**
503
+ * Called after all plugins are registered.
504
+ * Safe to depend on other plugins here.
505
+ */
506
+ async boot(app: NyalaApplication): Promise<void> {
507
+ // TODO: run post-registration startup logic
508
+ }
509
+ }
510
+ `;
511
+ }
512
+ getSeederTemplate(className) {
513
+ return `import { Seeder } from "@nyalajs/database";
514
+ import { NodePgDatabase } from "drizzle-orm/node-postgres";
515
+
516
+ export default class ${className} extends Seeder {
517
+ /**
518
+ * Run the database seeds.
519
+ */
520
+ async run(db: NodePgDatabase): Promise<void> {
521
+ // TODO: insert seed data
522
+ // await db.insert(users).values({ ... });
523
+ }
524
+ }
525
+ `;
526
+ }
527
+ getFactoryTemplate(className, name) {
528
+ const modelName = (0, naming_1.toPascalCase)(name);
529
+ return `import { Factory } from "@nyalajs/database";
530
+ // import { ${modelName} } from "../../app/models/${(0, naming_1.toKebabCase)(name)}";
531
+
532
+ export class ${className} extends Factory<any /* ${modelName} */> {
533
+ model = Object as any; // TODO: replace with ${modelName}
534
+
535
+ /**
536
+ * Define the model's default state.
537
+ */
538
+ definition(): any /* Partial<${modelName}> */ {
539
+ return {
540
+ // TODO: define default attributes
541
+ };
542
+ }
543
+ }
544
+ `;
545
+ }
546
+ getDtoTemplate(className) {
547
+ return `export class ${className} {
548
+ // TODO: Define your data transfer object properties
549
+ }
550
+ `;
551
+ }
552
+ }
553
+ exports.GenerateCommand = GenerateCommand;
554
+ //# sourceMappingURL=generate.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.command.js","sourceRoot":"","sources":["../../src/commands/generate.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Real migration runner using Drizzle ORM's migrate() function.
3
+ * Reads DB credentials from the environment (loaded from .env) and
4
+ * runs all pending migrations from database/migrations/.
5
+ */
6
+ export declare class MigrateCommand {
7
+ handle(options?: {
8
+ fresh?: boolean;
9
+ seed?: boolean;
10
+ }): Promise<void>;
11
+ fresh(): Promise<void>;
12
+ private runSeeders;
13
+ private buildConnectionString;
14
+ }
15
+ //# sourceMappingURL=migrate.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.command.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.command.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,qBAAa,cAAc;IACjB,MAAM,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ExE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCd,UAAU;IAuBxB,OAAO,CAAC,qBAAqB;CAahC"}