migrationSource function

String migrationSource(
  1. Migration migration
)

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';
import 'package:orm/driver.dart';
${_schemaImports([
      ...?migration.snapshot?.tables,
      for (final step in migration.steps) ...switch (step) {
          Backfill(:final table) => [table],
          CheckedTableSql(:final before, :final after) => [?before, ?after],
          RebuildTable(:final before, :final after) => [before, after],
          _ => <TableSchema>[],
        },
    ])}

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!)};'}
''';