24 lines
1.2 KiB
SQL
24 lines
1.2 KiB
SQL
-- Snapshot schedules table for automated snapshot creation
|
|
CREATE TABLE IF NOT EXISTS snapshot_schedules (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
dataset VARCHAR(255) NOT NULL,
|
|
snapshot_name_template VARCHAR(255) NOT NULL, -- e.g., "auto-%Y-%m-%d-%H%M" or "daily-backup"
|
|
schedule_type VARCHAR(50) NOT NULL, -- 'hourly', 'daily', 'weekly', 'monthly', 'cron'
|
|
schedule_config JSONB NOT NULL, -- For cron: {"cron": "0 0 * * *"}, for others: {"time": "00:00", "day": 1, etc.}
|
|
recursive BOOLEAN NOT NULL DEFAULT false,
|
|
enabled BOOLEAN NOT NULL DEFAULT true,
|
|
retention_count INTEGER, -- Keep last N snapshots (null = unlimited)
|
|
retention_days INTEGER, -- Keep snapshots for N days (null = unlimited)
|
|
last_run_at TIMESTAMP,
|
|
next_run_at TIMESTAMP,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
UNIQUE(name)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_snapshot_schedules_enabled ON snapshot_schedules(enabled);
|
|
CREATE INDEX IF NOT EXISTS idx_snapshot_schedules_next_run ON snapshot_schedules(next_run_at);
|
|
CREATE INDEX IF NOT EXISTS idx_snapshot_schedules_dataset ON snapshot_schedules(dataset);
|