Chatbot / supabase_schema.sql
Aniket2006's picture
Switch to gemini-1.5-flash-8b for higher rate limits
c36a5b7
-- =============================================================================
-- 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;