status method

Future<void> status()

Implementation

Future<void> status() async {
  await _ensureDatabaseExists();
  await _ensureMigrationTable();

  final ran = await _getRanMigrationsWithDetails();
  final ranNames = ran.map((m) => m['name'] as String).toSet();

  Khadem.logger.info('\nšŸ“Š Migration Status:');
  Khadem.logger.info('--------------------------------------------------');
  Khadem.logger.info(
    '| Status   | Migration Name                           | Batch |',
  );
  Khadem.logger.info('--------------------------------------------------');

  for (final migration in _migrations) {
    final isRan = ranNames.contains(migration.name);
    final status = isRan ? 'āœ… Ran  ' : 'āŒ Pending';
    final batch = isRan
        ? ran
              .firstWhere((m) => m['name'] == migration.name)['batch']
              .toString()
        : '-';

    Khadem.logger.info(
      '| $status | ${migration.name.padRight(36)} | ${batch.padRight(5)} |',
    );
  }
  Khadem.logger.info('--------------------------------------------------\n');
}