-- ============================================================================= -- 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;