generate method

  1. @override
String? generate(
  1. LibraryReader library,
  2. BuildStep? buildStep, {
  3. Schema? newSchema,
  4. int? version,
})

Creates a new migration from the delta between the existing migration and a new schema

Implementation

@override
String? generate(library, BuildStep? buildStep, {Schema? newSchema, int? version}) {
  final allMigrations = expandAllMigrations(library);
  final oldSchema = Schema.fromMigrations(allMigrations.toSet());

  final difference = newSchema == null
      ? SchemaDifference(emptySchema, oldSchema)
      : SchemaDifference(oldSchema, newSchema);

  if (!difference.hasDifference || difference.toMigrationCommands().isEmpty) {
    return null;
  }

  final output = Migration.generate(difference.toMigrationCommands(), version!);

  return output;
}