37 lines
1.5 KiB
SQL
37 lines
1.5 KiB
SQL
-- ==========================================
|
|
-- Migration 018: Model Visibility
|
|
-- ==========================================
|
|
-- Replace binary is_enabled with three-state visibility:
|
|
-- 'enabled' — visible to all users in model selector
|
|
-- 'disabled' — hidden from everyone
|
|
-- 'team' — only available to team admins for building presets
|
|
-- ==========================================
|
|
|
|
-- Add new column (idempotent)
|
|
ALTER TABLE model_configs ADD COLUMN IF NOT EXISTS visibility VARCHAR(10) DEFAULT 'disabled';
|
|
|
|
-- Backfill from is_enabled if it still exists
|
|
DO $$ BEGIN
|
|
IF EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'model_configs' AND column_name = 'is_enabled'
|
|
) THEN
|
|
UPDATE model_configs SET visibility = CASE
|
|
WHEN is_enabled = true THEN 'enabled'
|
|
ELSE 'disabled'
|
|
END;
|
|
ALTER TABLE model_configs DROP COLUMN is_enabled;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Ensure NOT NULL (safe: DEFAULT already covers new rows)
|
|
UPDATE model_configs SET visibility = 'disabled' WHERE visibility IS NULL;
|
|
ALTER TABLE model_configs ALTER COLUMN visibility SET NOT NULL;
|
|
|
|
-- Constraint (drop first for idempotency)
|
|
ALTER TABLE model_configs DROP CONSTRAINT IF EXISTS chk_model_visibility;
|
|
ALTER TABLE model_configs ADD CONSTRAINT chk_model_visibility
|
|
CHECK (visibility IN ('enabled', 'disabled', 'team'));
|
|
|
|
COMMENT ON COLUMN model_configs.visibility IS 'enabled=all users, team=team admin presets only, disabled=hidden';
|