writeVersion method

  1. @override
Future<void> writeVersion(
  1. MigrationVersionArtifacts artifacts
)
override

Persists all provided artifacts for a migration version.

Throws MigrationVersionAlreadyExistsException if the version already exists.

Implementation

@override
Future<void> writeVersion(MigrationVersionArtifacts artifacts) async {
  var versionDirectory = MigrationConstants.migrationVersionDirectory(
    _projectDirectory,
    artifacts.version,
  );
  if (await versionDirectory.exists()) {
    throw MigrationVersionAlreadyExistsException(
      directoryPath: versionDirectory.path,
    );
  }
  await versionDirectory.create(recursive: true);

  await _writeFile(
    MigrationConstants.databaseDefinitionProjectJSONPath(
      _projectDirectory,
      artifacts.version,
    ),
    _encodeProtocolObject(artifacts.projectDefinition),
  );
  await _writeFile(
    MigrationConstants.databaseDefinitionJSONPath(
      _projectDirectory,
      artifacts.version,
    ),
    _encodeProtocolObject(artifacts.definition),
  );
  await _writeFile(
    MigrationConstants.databaseDefinitionSQLPath(
      _projectDirectory,
      artifacts.version,
    ),
    artifacts.definitionSql,
  );
  await _writeFile(
    MigrationConstants.databaseMigrationJSONPath(
      _projectDirectory,
      artifacts.version,
    ),
    _encodeProtocolObject(artifacts.migration),
  );
  await _writeFile(
    MigrationConstants.databaseMigrationSQLPath(
      _projectDirectory,
      artifacts.version,
    ),
    artifacts.migrationSql,
  );
}