40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { BaseMigration } from './base-migration.ts';
|
|
import type { TQueryFunction } from '../types.ts';
|
|
|
|
export class Migration010BackupSchedules extends BaseMigration {
|
|
readonly version = 10;
|
|
readonly description = 'Backup schedules table';
|
|
|
|
up(query: TQueryFunction): void {
|
|
query(`
|
|
CREATE TABLE backup_schedules (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
service_id INTEGER NOT NULL,
|
|
service_name TEXT NOT NULL,
|
|
cron_expression TEXT NOT NULL,
|
|
retention_tier TEXT NOT NULL,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
last_run_at REAL,
|
|
next_run_at REAL,
|
|
last_status TEXT,
|
|
last_error TEXT,
|
|
created_at REAL NOT NULL,
|
|
updated_at REAL NOT NULL,
|
|
FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
|
|
)
|
|
`);
|
|
|
|
query(
|
|
'CREATE INDEX IF NOT EXISTS idx_backup_schedules_service ON backup_schedules(service_id)',
|
|
);
|
|
query(
|
|
'CREATE INDEX IF NOT EXISTS idx_backup_schedules_enabled ON backup_schedules(enabled)',
|
|
);
|
|
|
|
query('ALTER TABLE backups ADD COLUMN retention_tier TEXT');
|
|
query(
|
|
'ALTER TABLE backups ADD COLUMN schedule_id INTEGER REFERENCES backup_schedules(id) ON DELETE SET NULL',
|
|
);
|
|
}
|
|
}
|