migrationHistorySource function
Emits a static registry. Each file owns its recorded fingerprint so rebuilding this registry does not silently accept edited migration definitions.
Implementation
String migrationHistorySource(
Iterable<String> ids, {
required SqlDialect dialect,
}) {
final names = ids.toList();
if (names.toSet().length != names.length ||
names.any((id) => !RegExp(r'^[0-9]+_[a-z][a-z0-9_]*$').hasMatch(id))) {
throw ArgumentError('Use distinct migration IDs in version order.');
}
return '''
// GENERATED CODE - DO NOT MODIFY BY HAND.
import 'package:orm/migrate.dart';
${[for (var i = 0; i < names.length; i++) "import 'm${names[i]}.dart' as m$i;"].join('\n')}
const migrationDialect = SqlDialect.${dialect.name};
final migrationHistory = MigrationHistory([
${[for (var i = 0; i < names.length; i++) '(m$i.migration, m$i.migrationChecksum),'].join('\n')}
], dialect: migrationDialect);
''';
}