7f88414b40
DROP POLICY IF EXISTS before CREATE POLICY so migrations can be re-applied to a DB that already has the policy (e.g. demo_config was manually applied before migration tracking was set up).
20 lines
813 B
SQL
20 lines
813 B
SQL
-- 20260511000000_user_api_keys.sql
|
|
--
|
|
-- Stores user-provisioned AI provider API keys.
|
|
-- Service role only — the web backend verifies the user JWT before
|
|
-- reading or writing. No public or anon access.
|
|
|
|
CREATE TABLE IF NOT EXISTS public.user_api_keys (
|
|
id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
user_id uuid NOT NULL,
|
|
provider text NOT NULL, -- 'openai' | 'anthropic' | 'gemini' | 'grok'
|
|
key_value text NOT NULL DEFAULT '',
|
|
created_at timestamptz DEFAULT now(),
|
|
updated_at timestamptz DEFAULT now(),
|
|
UNIQUE(user_id, provider)
|
|
);
|
|
|
|
ALTER TABLE public.user_api_keys ENABLE ROW LEVEL SECURITY;
|
|
DROP POLICY IF EXISTS "service only" ON public.user_api_keys;
|
|
CREATE POLICY "service only" ON public.user_api_keys USING (false);
|