call method
Call other seeders
Useful for composing seeders and managing dependencies.
Example:
@override
Future<void> run() async {
await call([UserSeeder.new, PostSeeder.new]);
}
Implementation
Future<void> call(
List<DatabaseSeeder Function(OrmConnection)> factories,
) async {
final bus = _bus();
for (var i = 0; i < factories.length; i++) {
final factory = factories[i];
final seeder = factory(connection);
seeder.attachEventBus(bus);
final name = seeder.runtimeType.toString();
final stopwatch = Stopwatch()..start();
bus.emit(
SeederStartedEvent(
seederName: name,
index: i + 1,
total: factories.length,
),
);
try {
await seeder.run();
stopwatch.stop();
bus.emit(
SeederCompletedEvent(seederName: name, duration: stopwatch.elapsed),
);
} catch (error, stackTrace) {
stopwatch.stop();
bus.emit(
SeederFailedEvent(
seederName: name,
error: error,
stackTrace: stackTrace,
),
);
rethrow;
}
}
}