veylant/migrations/000004_feature_flags.up.sql
2026-02-23 13:35:04 +01:00

29 lines
1.4 KiB
SQL

-- Migration 000004: Feature flags (Sprint 5 — E3-09)
-- Per-tenant (or global) feature flags stored in PostgreSQL.
-- Toggle via admin API; read by the application with Redis-backed caching.
CREATE TABLE feature_flags (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
-- tenant_id NULL means a global flag that applies to all tenants.
tenant_id UUID REFERENCES tenants(id) ON DELETE CASCADE,
name TEXT NOT NULL,
is_enabled BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
-- A flag name must be unique per tenant (or globally when tenant_id is NULL).
UNIQUE NULLS NOT DISTINCT (tenant_id, name)
);
-- Auto-update updated_at on row modification.
CREATE TRIGGER feature_flags_updated_at
BEFORE UPDATE ON feature_flags
FOR EACH ROW EXECUTE FUNCTION set_updated_at();
-- ──────────────────────────────────────────────
-- Default global flags
-- ──────────────────────────────────────────────
-- ner_enabled: controls whether the NER layer runs in the PII pipeline.
-- Disabling it speeds up low-sensitivity requests at the cost of recall.
INSERT INTO feature_flags (tenant_id, name, is_enabled)
VALUES (NULL, 'ner_enabled', TRUE);