29 lines
1.4 KiB
SQL
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);
|