handle method

  1. @override
Future<void> handle(
  1. List<String> args
)
override

Called automatically before executing the command. You can override to do pre-validation or setup.

Implementation

@override
Future<void> handle(List<String> args) async {
  final tableName = argResults?['name'] as String?;
  if (tableName == null || tableName.trim().isEmpty) {
    logger.error('❌ Usage: dart run khadem make:migration --name=likes');
    exitCode = 1;
    return;
  }

  final timestamp = DateTime.now().millisecondsSinceEpoch;
  final migrationName = 'create_${tableName}_table';
  final className = CliNaming.toPascalCase(migrationName);
  final file =
      File('lib/database/migrations/${timestamp}_$migrationName.dart');

  await file.create(recursive: true);
  await file.writeAsString(_migrationStub(className, tableName));

  logger.info('✅ Migration created: ${file.path}');

  await _updateMigrationsFile();

  logger.info('🔄 migrations.dart updated successfully.');
  exitCode = 0;
  return;
}