Spaces:
Running
Running
| -- ============================================================================= | |
| -- AGROW Chatbot Tables - COMPLETE FIX | |
| -- Run this ENTIRE script in Supabase SQL Editor | |
| -- ============================================================================= | |
| -- Step 1: Drop existing tables (to fix column types) | |
| DROP TABLE IF EXISTS chat_messages CASCADE; | |
| DROP TABLE IF EXISTS chat_sessions CASCADE; | |
| -- Step 2: Create tables with correct types (user_id as TEXT, not UUID) | |
| CREATE TABLE chat_sessions ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| user_id TEXT NOT NULL, -- TEXT to allow any user ID format | |
| title TEXT NOT NULL DEFAULT 'New Conversation', | |
| created_at TIMESTAMPTZ DEFAULT NOW(), | |
| updated_at TIMESTAMPTZ DEFAULT NOW() | |
| ); | |
| CREATE TABLE chat_messages ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| session_id UUID REFERENCES chat_sessions(id) ON DELETE CASCADE, | |
| role TEXT NOT NULL CHECK (role IN ('user', 'assistant')), | |
| content TEXT NOT NULL, | |
| context_used JSONB, | |
| created_at TIMESTAMPTZ DEFAULT NOW() | |
| ); | |
| -- Step 3: Create indexes | |
| CREATE INDEX idx_chat_sessions_user_id ON chat_sessions(user_id); | |
| CREATE INDEX idx_chat_sessions_updated ON chat_sessions(updated_at DESC); | |
| CREATE INDEX idx_chat_messages_session ON chat_messages(session_id); | |
| CREATE INDEX idx_chat_messages_created ON chat_messages(created_at); | |
| -- Step 4: Enable RLS | |
| ALTER TABLE chat_sessions ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE chat_messages ENABLE ROW LEVEL SECURITY; | |
| -- Step 5: Create PERMISSIVE policies (allow all - backend handles auth) | |
| CREATE POLICY "Allow all on chat_sessions" ON chat_sessions | |
| FOR ALL USING (true) WITH CHECK (true); | |
| CREATE POLICY "Allow all on chat_messages" ON chat_messages | |
| FOR ALL USING (true) WITH CHECK (true); | |
| -- Step 6: Auto-update timestamp | |
| CREATE OR REPLACE FUNCTION update_updated_at() | |
| RETURNS TRIGGER AS $$ | |
| BEGIN | |
| NEW.updated_at = NOW(); | |
| RETURN NEW; | |
| END; | |
| $$ LANGUAGE plpgsql; | |
| CREATE TRIGGER update_chat_sessions_updated_at | |
| BEFORE UPDATE ON chat_sessions | |
| FOR EACH ROW | |
| EXECUTE FUNCTION update_updated_at(); | |
| -- Confirm success | |
| SELECT 'Tables created successfully!' as status; | |