ensureHistoryTable method
void
ensureHistoryTable(
- Database database
Ensures the migration history table exists and contains all known columns.
Implementation
void ensureHistoryTable(sqlite.Database database) {
database.execute('''
CREATE TABLE IF NOT EXISTS "$historyTableName" (
name TEXT PRIMARY KEY,
applied_at TEXT NOT NULL,
statement_count INTEGER NOT NULL,
kind TEXT NOT NULL DEFAULT 'apply',
target_name TEXT,
provider TEXT,
checksum TEXT,
before_schema TEXT,
after_schema TEXT,
warnings TEXT,
rebuild_required INTEGER NOT NULL DEFAULT 0
)
''');
final columns = database
.select('PRAGMA table_info("$historyTableName")')
.map((row) => row['name'] as String)
.toSet();
if (!columns.contains('kind')) {
database.execute(
'ALTER TABLE "$historyTableName" '
'ADD COLUMN kind TEXT NOT NULL DEFAULT \'apply\'',
);
}
if (!columns.contains('target_name')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN target_name TEXT',
);
}
if (!columns.contains('provider')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN provider TEXT',
);
}
if (!columns.contains('checksum')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN checksum TEXT',
);
}
if (!columns.contains('before_schema')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN before_schema TEXT',
);
}
if (!columns.contains('after_schema')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN after_schema TEXT',
);
}
if (!columns.contains('warnings')) {
database.execute(
'ALTER TABLE "$historyTableName" ADD COLUMN warnings TEXT',
);
}
if (!columns.contains('rebuild_required')) {
database.execute(
'ALTER TABLE "$historyTableName" '
'ADD COLUMN rebuild_required INTEGER NOT NULL DEFAULT 0',
);
}
}