setup method

Future<void> setup({
  1. required Map<String, dynamic> database,
  2. required List<Seeder> seeders,
})

Implementation

Future<void> setup({
  required Map<String, dynamic> database,
  required List<Seeder> seeders,
}) async {
  if (database['default'] == null) {
    stderr.write('❌ Database config not valid');
    exit(1);
  }
  try {
    ConnectionManager().defaultConnection = database['default'];
    Map<String, dynamic> connections = database['connections'];
    await ConnectionManager().connect(
      _config(connections[ConnectionManager().defaultConnection]),
      database['default'],
    );
  } catch (e) {
    stderr.write(e);
    exit(1);
  } finally {
    for (Seeder seeder in seeders) {
      final stopwatch = Stopwatch()..start();
      try {
        await seeder.run();
        stopwatch.stop();
        stderr.writeln(
            ' Seeder ${toSnakeCase(seeder.runtimeType.toString())} executed ....................................\x1B[32m ${stopwatch.elapsedMilliseconds}ms DONE\x1B[0m');
      } on QueryException catch (e) {
        stopwatch.stop();
        stderr.write(e.cause);
        await ConnectionManager().connection(database['default'])!.close();
        exit(1);
      }
    }
    await ConnectionManager().connection(database['default'])!.close();
    stderr
        .write('\x1B[32m All database seeders executed successfully \x1B[0m');
    exit(0);
  }
}