writeDraft method
Writes a draft to a migration directory on disk.
Implementation
Directory writeDraft({
required PostgresqlMigrationDraft draft,
required String directoryPath,
}) {
final root = Directory(directoryPath)..createSync(recursive: true);
final migrationDir = Directory(
'${root.path}${Platform.pathSeparator}${draft.name}',
)..createSync(recursive: true);
File(
'${migrationDir.path}${Platform.pathSeparator}migration.sql',
).writeAsStringSync(draft.sqlScript);
File(
'${migrationDir.path}${Platform.pathSeparator}metadata.txt',
).writeAsStringSync(
metadataText(
name: draft.name,
generatedAt: draft.generatedAt,
statementCount: draft.plan.statements.length,
warningCount: draft.plan.warnings.length,
rebuildRequired: draft.plan.requiresRebuild,
provider: PostgresqlMigrationRunner.providerName,
checksum: draft.checksum,
),
);
File(
'${migrationDir.path}${Platform.pathSeparator}before.prisma',
).writeAsStringSync(draft.beforeSchema);
File(
'${migrationDir.path}${Platform.pathSeparator}after.prisma',
).writeAsStringSync(draft.afterSchema);
if (draft.plan.warnings.isNotEmpty) {
File(
'${migrationDir.path}${Platform.pathSeparator}warnings.txt',
).writeAsStringSync('${draft.plan.warnings.join('\n')}\n');
}
updateMigrationManifest(root.path);
return migrationDir;
}