migrationSource function
Emits a reviewed migration and its fixed fingerprint as ordinary Dart values. Formatting/comments are not part of the fingerprint; SQL and operation data are.
Implementation
String migrationSource(Migration migration) =>
'''
// Review before applying. Applied migrations must remain unchanged.
import 'package:orm/migrate.dart';
const migrationChecksum = ${_dartValue(migration.checksum)};
final migration = Migration.steps(
${_dartValue(migration.id)},
[${migration.steps.map(_stepSource).join(', ')}],
dialect: SqlDialect.${migration.dialect.name},
${migration.previous == null ? '' : 'previous: ${_dartValue(migration.previous)},'}
${migration.snapshot == null ? '' : 'snapshot: _schema,'}
);
${migration.snapshot == null ? '' : '\nfinal _schema = ${_snapshotSource(migration.snapshot!)};'}
''';