@veloxts/cli 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/db.d.ts +12 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +18 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/procedures.d.ts +12 -0
- package/dist/commands/procedures.d.ts.map +1 -0
- package/dist/commands/procedures.js +153 -0
- package/dist/commands/procedures.js.map +1 -0
- package/dist/generators/generators/factory.d.ts +36 -0
- package/dist/generators/generators/factory.d.ts.map +1 -0
- package/dist/generators/generators/factory.js +85 -0
- package/dist/generators/generators/factory.js.map +1 -0
- package/dist/generators/generators/index.d.ts +2 -0
- package/dist/generators/generators/index.d.ts.map +1 -1
- package/dist/generators/generators/index.js +8 -0
- package/dist/generators/generators/index.js.map +1 -1
- package/dist/generators/generators/seeder.d.ts +36 -0
- package/dist/generators/generators/seeder.d.ts.map +1 -0
- package/dist/generators/generators/seeder.js +99 -0
- package/dist/generators/generators/seeder.js.map +1 -0
- package/dist/generators/templates/factory.d.ts +26 -0
- package/dist/generators/templates/factory.d.ts.map +1 -0
- package/dist/generators/templates/factory.js +125 -0
- package/dist/generators/templates/factory.js.map +1 -0
- package/dist/generators/templates/seeder.d.ts +34 -0
- package/dist/generators/templates/seeder.d.ts.map +1 -0
- package/dist/generators/templates/seeder.js +129 -0
- package/dist/generators/templates/seeder.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/seeding/commands/seed.d.ts +11 -0
- package/dist/seeding/commands/seed.d.ts.map +1 -0
- package/dist/seeding/commands/seed.js +268 -0
- package/dist/seeding/commands/seed.js.map +1 -0
- package/dist/seeding/errors.d.ts +119 -0
- package/dist/seeding/errors.d.ts.map +1 -0
- package/dist/seeding/errors.js +191 -0
- package/dist/seeding/errors.js.map +1 -0
- package/dist/seeding/factory.d.ts +162 -0
- package/dist/seeding/factory.d.ts.map +1 -0
- package/dist/seeding/factory.js +250 -0
- package/dist/seeding/factory.js.map +1 -0
- package/dist/seeding/index.d.ts +31 -0
- package/dist/seeding/index.d.ts.map +1 -0
- package/dist/seeding/index.js +41 -0
- package/dist/seeding/index.js.map +1 -0
- package/dist/seeding/loader.d.ts +41 -0
- package/dist/seeding/loader.d.ts.map +1 -0
- package/dist/seeding/loader.js +210 -0
- package/dist/seeding/loader.js.map +1 -0
- package/dist/seeding/registry.d.ts +116 -0
- package/dist/seeding/registry.d.ts.map +1 -0
- package/dist/seeding/registry.js +298 -0
- package/dist/seeding/registry.js.map +1 -0
- package/dist/seeding/runner.d.ts +88 -0
- package/dist/seeding/runner.d.ts.map +1 -0
- package/dist/seeding/runner.js +254 -0
- package/dist/seeding/runner.js.map +1 -0
- package/dist/seeding/types.d.ts +247 -0
- package/dist/seeding/types.d.ts.map +1 -0
- package/dist/seeding/types.js +7 -0
- package/dist/seeding/types.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeder Runner
|
|
3
|
+
*
|
|
4
|
+
* Executes seeders with dependency resolution, logging, and error handling.
|
|
5
|
+
*/
|
|
6
|
+
import { executionFailed, seederDatabaseError, truncationFailed } from './errors.js';
|
|
7
|
+
import { createFactoryRegistry } from './factory.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Seeder Runner
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Seeder execution runner.
|
|
13
|
+
*
|
|
14
|
+
* Handles running seeders in correct dependency order with proper
|
|
15
|
+
* context, logging, and error handling.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const runner = new SeederRunner(prisma, registry);
|
|
20
|
+
*
|
|
21
|
+
* // Run all seeders
|
|
22
|
+
* const result = await runner.runAll();
|
|
23
|
+
*
|
|
24
|
+
* // Run specific seeders
|
|
25
|
+
* const result = await runner.run(['UserSeeder', 'PostSeeder']);
|
|
26
|
+
*
|
|
27
|
+
* // Fresh seed (truncate first)
|
|
28
|
+
* const result = await runner.fresh();
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export class SeederRunner {
|
|
32
|
+
prisma;
|
|
33
|
+
registry;
|
|
34
|
+
factoryRegistry;
|
|
35
|
+
constructor(prisma, registry) {
|
|
36
|
+
this.prisma = prisma;
|
|
37
|
+
this.registry = registry;
|
|
38
|
+
this.factoryRegistry = createFactoryRegistry(prisma);
|
|
39
|
+
}
|
|
40
|
+
// ==========================================================================
|
|
41
|
+
// Public API
|
|
42
|
+
// ==========================================================================
|
|
43
|
+
/**
|
|
44
|
+
* Run all registered seeders in dependency order.
|
|
45
|
+
*
|
|
46
|
+
* @param options - Run options
|
|
47
|
+
* @returns Batch result with individual seeder results
|
|
48
|
+
*/
|
|
49
|
+
async runAll(options = {}) {
|
|
50
|
+
const environment = options.environment ?? this.detectEnvironment();
|
|
51
|
+
const seeders = this.registry.getInOrder(environment);
|
|
52
|
+
return this.executeSeeders(seeders, options);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Run specific seeders by name (includes their dependencies).
|
|
56
|
+
*
|
|
57
|
+
* @param names - Seeder names to run
|
|
58
|
+
* @param options - Run options
|
|
59
|
+
* @returns Batch result with individual seeder results
|
|
60
|
+
*/
|
|
61
|
+
async run(names, options = {}) {
|
|
62
|
+
const environment = options.environment ?? this.detectEnvironment();
|
|
63
|
+
const seeders = this.registry.getByNames(names, environment);
|
|
64
|
+
return this.executeSeeders(seeders, options);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Run seeders with fresh (truncate tables first).
|
|
68
|
+
*
|
|
69
|
+
* Calls truncate() on each seeder in reverse order, then runs them.
|
|
70
|
+
*
|
|
71
|
+
* @param options - Run options
|
|
72
|
+
* @returns Batch result with individual seeder results
|
|
73
|
+
*/
|
|
74
|
+
async fresh(options = {}) {
|
|
75
|
+
const environment = options.environment ?? this.detectEnvironment();
|
|
76
|
+
const seeders = this.registry.getInOrder(environment);
|
|
77
|
+
// Truncate in reverse order (dependents first)
|
|
78
|
+
if (!options.dryRun) {
|
|
79
|
+
await this.truncateSeeders([...seeders].reverse(), options);
|
|
80
|
+
}
|
|
81
|
+
return this.executeSeeders(seeders, options);
|
|
82
|
+
}
|
|
83
|
+
// ==========================================================================
|
|
84
|
+
// Execution
|
|
85
|
+
// ==========================================================================
|
|
86
|
+
/**
|
|
87
|
+
* Execute a list of seeders in order.
|
|
88
|
+
*/
|
|
89
|
+
async executeSeeders(seeders, options) {
|
|
90
|
+
const startTime = Date.now();
|
|
91
|
+
const results = [];
|
|
92
|
+
let successful = 0;
|
|
93
|
+
let failed = 0;
|
|
94
|
+
for (const seeder of seeders) {
|
|
95
|
+
const result = await this.executeSeeder(seeder, options);
|
|
96
|
+
results.push(result);
|
|
97
|
+
if (result.success) {
|
|
98
|
+
successful++;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
failed++;
|
|
102
|
+
// Stop on first failure to prevent cascading errors
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Calculate skipped as seeders that weren't executed due to early failure
|
|
107
|
+
const skipped = seeders.length - results.length;
|
|
108
|
+
return {
|
|
109
|
+
results,
|
|
110
|
+
total: seeders.length,
|
|
111
|
+
successful,
|
|
112
|
+
failed,
|
|
113
|
+
skipped,
|
|
114
|
+
duration: Date.now() - startTime,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Execute a single seeder.
|
|
119
|
+
*/
|
|
120
|
+
async executeSeeder(seeder, options) {
|
|
121
|
+
const startTime = Date.now();
|
|
122
|
+
// Dry run - just report what would run
|
|
123
|
+
if (options.dryRun) {
|
|
124
|
+
return {
|
|
125
|
+
name: seeder.name,
|
|
126
|
+
success: true,
|
|
127
|
+
duration: 0,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// Create context for this seeder
|
|
131
|
+
const context = this.createContext(seeder, options);
|
|
132
|
+
try {
|
|
133
|
+
await seeder.run(context);
|
|
134
|
+
return {
|
|
135
|
+
name: seeder.name,
|
|
136
|
+
success: true,
|
|
137
|
+
duration: Date.now() - startTime,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
142
|
+
return {
|
|
143
|
+
name: seeder.name,
|
|
144
|
+
success: false,
|
|
145
|
+
duration: Date.now() - startTime,
|
|
146
|
+
error: err.message,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Truncate tables for seeders that implement truncate().
|
|
152
|
+
*/
|
|
153
|
+
async truncateSeeders(seeders, options) {
|
|
154
|
+
for (const seeder of seeders) {
|
|
155
|
+
if (seeder.truncate) {
|
|
156
|
+
const context = this.createContext(seeder, options);
|
|
157
|
+
try {
|
|
158
|
+
await seeder.truncate(context);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
162
|
+
throw truncationFailed(seeder.name, err);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// ==========================================================================
|
|
168
|
+
// Context Creation
|
|
169
|
+
// ==========================================================================
|
|
170
|
+
/**
|
|
171
|
+
* Create execution context for a seeder.
|
|
172
|
+
*/
|
|
173
|
+
createContext(seeder, options) {
|
|
174
|
+
const environment = options.environment ?? this.detectEnvironment();
|
|
175
|
+
const log = this.createLogger(seeder.name, options);
|
|
176
|
+
// Capture `this` for runSeeder closure
|
|
177
|
+
const runner = this;
|
|
178
|
+
return {
|
|
179
|
+
db: this.prisma,
|
|
180
|
+
factory: this.factoryRegistry,
|
|
181
|
+
environment,
|
|
182
|
+
log,
|
|
183
|
+
async runSeeder(innerSeeder) {
|
|
184
|
+
const innerContext = runner.createContext(innerSeeder, options);
|
|
185
|
+
try {
|
|
186
|
+
await innerSeeder.run(innerContext);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
190
|
+
throw executionFailed(innerSeeder.name, err);
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Create logger for a seeder.
|
|
197
|
+
*/
|
|
198
|
+
createLogger(seederName, options) {
|
|
199
|
+
const prefix = `[${seederName}]`;
|
|
200
|
+
const verbose = options.verbose ?? false;
|
|
201
|
+
return {
|
|
202
|
+
info(message) {
|
|
203
|
+
console.log(`${prefix} ${message}`);
|
|
204
|
+
},
|
|
205
|
+
success(message) {
|
|
206
|
+
console.log(`${prefix} \u2714 ${message}`);
|
|
207
|
+
},
|
|
208
|
+
warning(message) {
|
|
209
|
+
console.log(`${prefix} \u26A0 ${message}`);
|
|
210
|
+
},
|
|
211
|
+
error(message) {
|
|
212
|
+
console.error(`${prefix} \u2718 ${message}`);
|
|
213
|
+
},
|
|
214
|
+
debug(message) {
|
|
215
|
+
if (verbose) {
|
|
216
|
+
console.log(`${prefix} [debug] ${message}`);
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// ==========================================================================
|
|
222
|
+
// Helpers
|
|
223
|
+
// ==========================================================================
|
|
224
|
+
/**
|
|
225
|
+
* Detect current environment from NODE_ENV.
|
|
226
|
+
*/
|
|
227
|
+
detectEnvironment() {
|
|
228
|
+
const env = process.env.NODE_ENV;
|
|
229
|
+
switch (env) {
|
|
230
|
+
case 'production':
|
|
231
|
+
return 'production';
|
|
232
|
+
case 'test':
|
|
233
|
+
return 'test';
|
|
234
|
+
default:
|
|
235
|
+
return 'development';
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Test database connection.
|
|
240
|
+
*
|
|
241
|
+
* @throws SeederError if connection fails
|
|
242
|
+
*/
|
|
243
|
+
async testConnection() {
|
|
244
|
+
try {
|
|
245
|
+
// Execute a simple query to test connection
|
|
246
|
+
await this.prisma.$queryRaw `SELECT 1`;
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
250
|
+
throw seederDatabaseError('connection test', err);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/seeding/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeding Types
|
|
3
|
+
*
|
|
4
|
+
* Core type definitions for the VeloxTS database seeding system.
|
|
5
|
+
*/
|
|
6
|
+
import type { PrismaClientLike } from '../migrations/types.js';
|
|
7
|
+
export type { PrismaClientLike };
|
|
8
|
+
/**
|
|
9
|
+
* Valid environment names for seeder filtering
|
|
10
|
+
*/
|
|
11
|
+
export type Environment = 'development' | 'production' | 'test';
|
|
12
|
+
/**
|
|
13
|
+
* Logger interface for seeder output
|
|
14
|
+
*/
|
|
15
|
+
export interface SeederLogger {
|
|
16
|
+
/** Log informational message */
|
|
17
|
+
info(message: string): void;
|
|
18
|
+
/** Log success message */
|
|
19
|
+
success(message: string): void;
|
|
20
|
+
/** Log warning message */
|
|
21
|
+
warning(message: string): void;
|
|
22
|
+
/** Log error message */
|
|
23
|
+
error(message: string): void;
|
|
24
|
+
/** Log debug message (only in verbose mode) */
|
|
25
|
+
debug(message: string): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Factory interface for creating model instances with fake data.
|
|
29
|
+
*
|
|
30
|
+
* @template TInput - The input type for creating records
|
|
31
|
+
* @template TOutput - The output type returned from database (defaults to TInput)
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const users = await factory.get(UserFactory).create(10);
|
|
36
|
+
* const admin = await factory.get(UserFactory).state('admin').create();
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export interface Factory<TInput extends Record<string, unknown>, TOutput = TInput> {
|
|
40
|
+
/** Model name for Prisma operations (e.g., 'user', 'post') */
|
|
41
|
+
readonly modelName: string;
|
|
42
|
+
/** Define default attributes for new instances */
|
|
43
|
+
definition(): TInput;
|
|
44
|
+
/**
|
|
45
|
+
* Create a single instance in the database
|
|
46
|
+
* @param overrides - Attributes to override defaults
|
|
47
|
+
*/
|
|
48
|
+
create(overrides?: Partial<TInput>): Promise<TOutput>;
|
|
49
|
+
/**
|
|
50
|
+
* Create multiple instances in the database
|
|
51
|
+
* @param count - Number of instances to create
|
|
52
|
+
* @param overrides - Attributes to override defaults for all instances
|
|
53
|
+
*/
|
|
54
|
+
createMany(count: number, overrides?: Partial<TInput>): Promise<TOutput[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Make a single instance without persisting to database
|
|
57
|
+
* @param overrides - Attributes to override defaults
|
|
58
|
+
*/
|
|
59
|
+
make(overrides?: Partial<TInput>): TInput;
|
|
60
|
+
/**
|
|
61
|
+
* Make multiple instances without persisting to database
|
|
62
|
+
* @param count - Number of instances to make
|
|
63
|
+
* @param overrides - Attributes to override defaults for all instances
|
|
64
|
+
*/
|
|
65
|
+
makeMany(count: number, overrides?: Partial<TInput>): TInput[];
|
|
66
|
+
/**
|
|
67
|
+
* Apply a named state modifier
|
|
68
|
+
* @param name - State name to apply
|
|
69
|
+
* @returns New factory instance with state applied
|
|
70
|
+
*/
|
|
71
|
+
state(name: string): Factory<TInput, TOutput>;
|
|
72
|
+
/**
|
|
73
|
+
* Get list of available state names
|
|
74
|
+
*/
|
|
75
|
+
getAvailableStates(): ReadonlyArray<string>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* State modifier function type
|
|
79
|
+
*/
|
|
80
|
+
export type StateModifier<TInput> = (attrs: TInput) => Partial<TInput>;
|
|
81
|
+
/**
|
|
82
|
+
* Factory constructor type for registry
|
|
83
|
+
*/
|
|
84
|
+
export interface FactoryConstructor<TInput extends Record<string, unknown> = Record<string, unknown>, TOutput = TInput> {
|
|
85
|
+
new (prisma: PrismaClientLike): Factory<TInput, TOutput>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Registry for managing factory instances
|
|
89
|
+
*/
|
|
90
|
+
export interface FactoryRegistry {
|
|
91
|
+
/**
|
|
92
|
+
* Get or create a factory instance
|
|
93
|
+
* @param FactoryClass - The factory constructor class
|
|
94
|
+
*/
|
|
95
|
+
get<TInput extends Record<string, unknown>, TOutput = TInput>(FactoryClass: FactoryConstructor<TInput, TOutput>): Factory<TInput, TOutput>;
|
|
96
|
+
/**
|
|
97
|
+
* Clear all cached factory instances
|
|
98
|
+
*/
|
|
99
|
+
clear(): void;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Context passed to seeders during execution.
|
|
103
|
+
*
|
|
104
|
+
* Provides access to database, factories, and logging utilities.
|
|
105
|
+
*/
|
|
106
|
+
export interface SeederContext {
|
|
107
|
+
/** Prisma client for database operations */
|
|
108
|
+
readonly db: PrismaClientLike;
|
|
109
|
+
/** Factory registry for creating fake data */
|
|
110
|
+
readonly factory: FactoryRegistry;
|
|
111
|
+
/** Current environment (development, production, test) */
|
|
112
|
+
readonly environment: Environment;
|
|
113
|
+
/** Logger for seeder output */
|
|
114
|
+
readonly log: SeederLogger;
|
|
115
|
+
/**
|
|
116
|
+
* Run another seeder (for composition)
|
|
117
|
+
* @param seeder - Seeder to run
|
|
118
|
+
*/
|
|
119
|
+
runSeeder(seeder: Seeder): Promise<void>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Base seeder interface - all seeders implement this.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* export const UserSeeder: Seeder = {
|
|
127
|
+
* name: 'UserSeeder',
|
|
128
|
+
* dependencies: ['RoleSeeder'],
|
|
129
|
+
*
|
|
130
|
+
* async run({ db, factory, log }) {
|
|
131
|
+
* await factory.get(UserFactory).createMany(10);
|
|
132
|
+
* log.success('Created 10 users');
|
|
133
|
+
* },
|
|
134
|
+
* };
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export interface Seeder {
|
|
138
|
+
/** Unique seeder name (e.g., 'UserSeeder') */
|
|
139
|
+
readonly name: string;
|
|
140
|
+
/**
|
|
141
|
+
* Seeders that must run before this one.
|
|
142
|
+
* Used for dependency resolution and execution ordering.
|
|
143
|
+
*/
|
|
144
|
+
readonly dependencies?: ReadonlyArray<string>;
|
|
145
|
+
/**
|
|
146
|
+
* Environments this seeder runs in.
|
|
147
|
+
* If not specified, runs in all environments.
|
|
148
|
+
*/
|
|
149
|
+
readonly environments?: ReadonlyArray<Environment>;
|
|
150
|
+
/**
|
|
151
|
+
* Run the seeder - populate data.
|
|
152
|
+
* @param context - Seeder execution context
|
|
153
|
+
*/
|
|
154
|
+
run(context: SeederContext): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* Optional: Truncate related tables before seeding.
|
|
157
|
+
* Called when running with --fresh flag.
|
|
158
|
+
* @param context - Seeder execution context
|
|
159
|
+
*/
|
|
160
|
+
truncate?(context: SeederContext): Promise<void>;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Result of seeder execution
|
|
164
|
+
*/
|
|
165
|
+
export interface SeederResult {
|
|
166
|
+
/** Seeder name */
|
|
167
|
+
readonly name: string;
|
|
168
|
+
/** Whether execution succeeded */
|
|
169
|
+
readonly success: boolean;
|
|
170
|
+
/** Duration in milliseconds */
|
|
171
|
+
readonly duration: number;
|
|
172
|
+
/** Error message if failed */
|
|
173
|
+
readonly error?: string;
|
|
174
|
+
/** Number of records created (if tracked) */
|
|
175
|
+
readonly recordsCreated?: number;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Result of batch seeder execution
|
|
179
|
+
*/
|
|
180
|
+
export interface BatchSeederResult {
|
|
181
|
+
/** Individual seeder results */
|
|
182
|
+
readonly results: ReadonlyArray<SeederResult>;
|
|
183
|
+
/** Total seeders executed */
|
|
184
|
+
readonly total: number;
|
|
185
|
+
/** Number of successful seeders */
|
|
186
|
+
readonly successful: number;
|
|
187
|
+
/** Number of failed seeders */
|
|
188
|
+
readonly failed: number;
|
|
189
|
+
/** Number of skipped seeders */
|
|
190
|
+
readonly skipped: number;
|
|
191
|
+
/** Total duration in milliseconds */
|
|
192
|
+
readonly duration: number;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Options for db:seed command
|
|
196
|
+
*/
|
|
197
|
+
export interface SeedCommandOptions {
|
|
198
|
+
/** Run truncate before seeding (fresh seed) */
|
|
199
|
+
readonly fresh?: boolean;
|
|
200
|
+
/** Run specific seeder class by name */
|
|
201
|
+
readonly class?: string;
|
|
202
|
+
/** Skip confirmation in production */
|
|
203
|
+
readonly force?: boolean;
|
|
204
|
+
/** Show what would run without executing */
|
|
205
|
+
readonly dryRun?: boolean;
|
|
206
|
+
/** Output as JSON */
|
|
207
|
+
readonly json?: boolean;
|
|
208
|
+
/** Verbose output */
|
|
209
|
+
readonly verbose?: boolean;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Options for seeder runner
|
|
213
|
+
*/
|
|
214
|
+
export interface SeederRunOptions {
|
|
215
|
+
/** Run truncate before seeding */
|
|
216
|
+
readonly fresh?: boolean;
|
|
217
|
+
/** Specific seeders to run (by name) */
|
|
218
|
+
readonly only?: ReadonlyArray<string>;
|
|
219
|
+
/** Show what would run without executing */
|
|
220
|
+
readonly dryRun?: boolean;
|
|
221
|
+
/** Verbose output */
|
|
222
|
+
readonly verbose?: boolean;
|
|
223
|
+
/** Current environment */
|
|
224
|
+
readonly environment?: Environment;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Loaded seeder from filesystem
|
|
228
|
+
*/
|
|
229
|
+
export interface LoadedSeeder {
|
|
230
|
+
/** Seeder instance */
|
|
231
|
+
readonly seeder: Seeder;
|
|
232
|
+
/** File path where seeder was loaded from */
|
|
233
|
+
readonly filePath: string;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Result of loading seeders from filesystem
|
|
237
|
+
*/
|
|
238
|
+
export interface SeederLoadResult {
|
|
239
|
+
/** Successfully loaded seeders */
|
|
240
|
+
readonly seeders: ReadonlyArray<LoadedSeeder>;
|
|
241
|
+
/** Files that failed to load */
|
|
242
|
+
readonly errors: ReadonlyArray<{
|
|
243
|
+
readonly filePath: string;
|
|
244
|
+
readonly error: string;
|
|
245
|
+
}>;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/seeding/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/seeding/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veloxts/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Developer tooling and CLI commands for VeloxTS framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"picocolors": "1.1.1",
|
|
35
35
|
"pluralize": "8.0.0",
|
|
36
36
|
"tsx": "4.21.0",
|
|
37
|
-
"@veloxts/auth": "0.4.
|
|
38
|
-
"@veloxts/core": "0.4.
|
|
39
|
-
"@veloxts/orm": "0.4.
|
|
40
|
-
"@veloxts/router": "0.4.
|
|
41
|
-
"@veloxts/validation": "0.4.
|
|
37
|
+
"@veloxts/auth": "0.4.3",
|
|
38
|
+
"@veloxts/core": "0.4.3",
|
|
39
|
+
"@veloxts/orm": "0.4.3",
|
|
40
|
+
"@veloxts/router": "0.4.3",
|
|
41
|
+
"@veloxts/validation": "0.4.3"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@prisma/client": ">=5.0.0"
|