Spaces:
Sleeping
Sleeping
| -- Database schema for Neon Postgres | |
| -- Users table | |
| CREATE TABLE IF NOT EXISTS users ( | |
| id SERIAL PRIMARY KEY, | |
| email VARCHAR(255) UNIQUE NOT NULL, | |
| password_hash VARCHAR(255) NOT NULL, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| software_background VARCHAR(100), | |
| hardware_background VARCHAR(100), | |
| experience_level VARCHAR(50) | |
| ); | |
| -- User profiles table | |
| CREATE TABLE IF NOT EXISTS user_profiles ( | |
| id SERIAL PRIMARY KEY, | |
| user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, | |
| personalization_settings JSONB DEFAULT '{}', | |
| learning_progress JSONB DEFAULT '{}', | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Chat sessions table | |
| CREATE TABLE IF NOT EXISTS chat_sessions ( | |
| id SERIAL PRIMARY KEY, | |
| user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, | |
| selected_text TEXT NOT NULL, | |
| question TEXT NOT NULL, | |
| response TEXT NOT NULL, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| conversation_history JSONB DEFAULT '[]' | |
| ); | |
| -- Textbook content table (for RAG) | |
| CREATE TABLE IF NOT EXISTS textbook_content ( | |
| id SERIAL PRIMARY KEY, | |
| chapter_id VARCHAR(100) NOT NULL, | |
| chapter_title VARCHAR(255) NOT NULL, | |
| content TEXT NOT NULL, | |
| embeddings JSONB, -- Store vector embeddings | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Indexes | |
| CREATE INDEX IF NOT EXISTS idx_users_email ON users(email); | |
| CREATE INDEX IF NOT EXISTS idx_chat_sessions_user_id ON chat_sessions(user_id); | |
| CREATE INDEX IF NOT EXISTS idx_textbook_content_chapter_id ON textbook_content(chapter_id); |