setup method
Implementation
Future<void> setup({
required Map<String, dynamic> database,
required List<Seeder> seeders,
List<String> args = const [],
}) async {
guardEnvironment('migrate:seed', force: hasForceFlag(args));
final defaultConnection = database['default'];
if (defaultConnection == null) {
throw DatabaseException(
'Database config not valid: "default" is missing',
);
}
final connections = database['connections'];
if (connections is! Map<String, dynamic> ||
connections[defaultConnection] == null) {
throw DatabaseException(
'Database config not valid: no connection named "$defaultConnection"',
);
}
ConnectionManager().defaultConnection = defaultConnection;
await ConnectionManager().connect(
_config(connections[defaultConnection]),
defaultConnection,
);
try {
for (final seeder in seeders) {
final stopwatch = Stopwatch()..start();
final name = toSnakeCase(seeder.runtimeType.toString());
try {
await seeder.run();
stopwatch.stop();
stderr.writeln(
' Seeder $name executed ....................................\x1B[32m ${stopwatch.elapsedMilliseconds}ms DONE\x1B[0m',
);
} on QueryException catch (e) {
stopwatch.stop();
throw DatabaseException('Seeder $name failed', e.cause);
}
}
stderr.writeln(
'\x1B[32m All database seeders executed successfully \x1B[0m',
);
} finally {
await ConnectionManager().connection(defaultConnection)?.close();
}
}