Spaces:
No application file
No application file
| -- Create messages table for chat history | |
| CREATE TABLE IF NOT EXISTS messages ( | |
| id UUID DEFAULT gen_random_uuid() PRIMARY KEY, | |
| role TEXT NOT NULL CHECK (role IN ('user', 'assistant')), | |
| content TEXT NOT NULL, | |
| provider TEXT CHECK (provider IN ('openai', 'openrouter', 'groq', 'grok')), | |
| session_id UUID, | |
| file_name TEXT, | |
| file_type TEXT, | |
| file_content TEXT, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), | |
| updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() | |
| ); | |
| -- Create chat sessions table | |
| CREATE TABLE IF NOT EXISTS chat_sessions ( | |
| id UUID DEFAULT gen_random_uuid() PRIMARY KEY, | |
| title TEXT NOT NULL, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), | |
| updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() | |
| ); | |
| -- Add foreign key relationship | |
| ALTER TABLE messages | |
| ADD CONSTRAINT fk_session | |
| FOREIGN KEY (session_id) REFERENCES chat_sessions(id) | |
| ON DELETE CASCADE; | |
| -- Create indexes for better performance | |
| CREATE INDEX IF NOT EXISTS idx_messages_session_id ON messages(session_id); | |
| CREATE INDEX IF NOT EXISTS idx_messages_created_at ON messages(created_at); | |
| CREATE INDEX IF NOT EXISTS idx_sessions_created_at ON chat_sessions(created_at); | |
| -- Enable Row Level Security (RLS) | |
| ALTER TABLE messages ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE chat_sessions ENABLE ROW LEVEL SECURITY; | |
| -- Create policies (adjust based on your auth requirements) | |
| CREATE POLICY "Users can view their own messages" ON messages | |
| FOR SELECT USING (true); -- Adjust based on your auth setup | |
| CREATE POLICY "Users can insert their own messages" ON messages | |
| FOR INSERT WITH CHECK (true); -- Adjust based on your auth setup | |
| CREATE POLICY "Users can view their own sessions" ON chat_sessions | |
| FOR SELECT USING (true); -- Adjust based on your auth setup | |
| CREATE POLICY "Users can create their own sessions" ON chat_sessions | |
| FOR INSERT WITH CHECK (true); -- Adjust based on your auth setup | |