exportDescriptor method

Future<void> exportDescriptor(
  1. MigrationDescriptor descriptor, {
  2. required Directory outputRoot,
  3. SchemaPlan? upPlan,
  4. SchemaPlan? downPlan,
})

Writes up.sql and down.sql for descriptor under outputRoot.

Layout: <outputRoot>/<migration-id>/up.sql and down.sql.

Implementation

Future<void> exportDescriptor(
  MigrationDescriptor descriptor, {
  required Directory outputRoot,
  SchemaPlan? upPlan,
  SchemaPlan? downPlan,
}) async {
  final dir = Directory(p.join(outputRoot.path, descriptor.id.toString()));
  if (!dir.existsSync()) {
    dir.createSync(recursive: true);
  }

  final upFile = File(p.join(dir.path, 'up.sql'));
  final downFile = File(p.join(dir.path, 'down.sql'));

  final upText = renderPlan(upPlan ?? descriptor.up);
  final downText = renderPlan(downPlan ?? descriptor.down);

  upFile.writeAsStringSync(upText);
  downFile.writeAsStringSync(downText);
}