Naveedtechlab's picture
Add full AI Native Textbook project source code
db7c1e8
-- 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);