Добавлены таблицы maintenance_policy и maintenance_policy_config_audit для postgres и sqlite; в postgres_maintenance_audit — колонка policy_id. Co-authored-by: Cursor <[email protected]>
48 lines
1.7 KiB
SQL
48 lines
1.7 KiB
SQL
CREATE TABLE IF NOT EXISTS maintenance_policy (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
table_name TEXT NOT NULL,
|
|
condition_sql TEXT NOT NULL DEFAULT 'true',
|
|
retention_period_sec INTEGER,
|
|
max_rows INTEGER,
|
|
vacuum_strategy TEXT NOT NULL DEFAULT 'none',
|
|
schedule_cron TEXT NOT NULL,
|
|
enabled BOOLEAN NOT NULL DEFAULT true,
|
|
dry_run_enabled BOOLEAN NOT NULL DEFAULT false,
|
|
last_run_at TIMESTAMPTZ,
|
|
last_status TEXT,
|
|
last_error TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
CONSTRAINT maintenance_policy_name_chk CHECK (length(trim(name)) > 0),
|
|
CONSTRAINT maintenance_policy_table_name_chk CHECK (length(trim(table_name)) > 0),
|
|
CONSTRAINT maintenance_policy_vacuum_strategy_chk CHECK (
|
|
vacuum_strategy IN ('none', 'vacuum', 'analyze', 'vacuum_analyze', 'reindex')
|
|
)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_maintenance_policy_enabled
|
|
ON maintenance_policy (enabled);
|
|
|
|
CREATE TABLE IF NOT EXISTS maintenance_policy_config_audit (
|
|
id TEXT PRIMARY KEY,
|
|
policy_id TEXT,
|
|
actor_prefix TEXT NOT NULL,
|
|
action TEXT NOT NULL,
|
|
before_json JSONB,
|
|
after_json JSONB,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
CONSTRAINT maintenance_policy_config_audit_action_chk CHECK (
|
|
action IN ('create', 'update', 'delete')
|
|
)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_maintenance_policy_config_audit_created
|
|
ON maintenance_policy_config_audit (created_at DESC);
|
|
|
|
ALTER TABLE postgres_maintenance_audit
|
|
ADD COLUMN IF NOT EXISTS policy_id TEXT REFERENCES maintenance_policy (id) ON DELETE SET NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_postgres_maintenance_audit_policy
|
|
ON postgres_maintenance_audit (policy_id);
|