writeVersion method
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,
);
}