Spaces:
Running
Running
| -- ========================================== | |
| -- EXTENSIONS | |
| -- ========================================== | |
| CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; | |
| CREATE EXTENSION IF NOT EXISTS "pgcrypto"; | |
| -- ========================================== | |
| -- USERS | |
| -- ========================================== | |
| CREATE TABLE users ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| name TEXT NOT NULL, | |
| email TEXT UNIQUE NOT NULL, | |
| institution TEXT, | |
| role TEXT, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- PROJECTS | |
| -- ========================================== | |
| CREATE TABLE projects ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| user_id UUID REFERENCES users(id) ON DELETE CASCADE, | |
| title TEXT NOT NULL, | |
| description TEXT, | |
| research_field TEXT, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- RESEARCH PAPERS | |
| -- ========================================== | |
| CREATE TABLE research_papers ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| project_id UUID REFERENCES projects(id) ON DELETE CASCADE, | |
| title TEXT, | |
| authors TEXT, | |
| journal TEXT, | |
| publication_year INT, | |
| pdf_path TEXT, | |
| uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- PAPER CHUNKS (RAG) | |
| -- ========================================== | |
| CREATE TABLE paper_chunks ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| paper_id UUID REFERENCES research_papers(id) ON DELETE CASCADE, | |
| chunk_index INT, | |
| content TEXT, | |
| section TEXT, | |
| metadata JSONB | |
| ); | |
| -- ========================================== | |
| -- ANALYSIS RUNS | |
| -- ========================================== | |
| CREATE TABLE analysis_runs ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| project_id UUID REFERENCES projects(id) ON DELETE CASCADE, | |
| model_used TEXT, | |
| status TEXT, | |
| started_at TIMESTAMP, | |
| completed_at TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- CONTRADICTIONS | |
| -- ========================================== | |
| CREATE TABLE contradictions ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| analysis_id UUID REFERENCES analysis_runs(id) ON DELETE CASCADE, | |
| paper_a UUID REFERENCES research_papers(id), | |
| paper_b UUID REFERENCES research_papers(id), | |
| variable TEXT, | |
| statement_a TEXT, | |
| statement_b TEXT, | |
| confidence_score FLOAT, | |
| detected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- RESEARCH GAPS | |
| -- ========================================== | |
| CREATE TABLE research_gaps ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| analysis_id UUID REFERENCES analysis_runs(id) ON DELETE CASCADE, | |
| description TEXT, | |
| importance_score FLOAT, | |
| suggested_direction TEXT | |
| ); | |
| -- ========================================== | |
| -- EXPERIMENTAL PROTOCOLS | |
| -- ========================================== | |
| CREATE TABLE experimental_protocols ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| analysis_id UUID REFERENCES analysis_runs(id) ON DELETE CASCADE, | |
| hypothesis TEXT, | |
| independent_variables JSONB, | |
| dependent_variables JSONB, | |
| control_variables JSONB, | |
| methodology TEXT, | |
| risk_analysis TEXT, | |
| estimated_cost TEXT, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- REASONING TRACES | |
| -- ========================================== | |
| CREATE TABLE reasoning_traces ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| analysis_id UUID REFERENCES analysis_runs(id) ON DELETE CASCADE, | |
| step_number INT, | |
| reasoning TEXT, | |
| source_chunks JSONB, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- EXPORTS | |
| -- ========================================== | |
| CREATE TABLE exports ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| analysis_id UUID REFERENCES analysis_runs(id) ON DELETE CASCADE, | |
| format TEXT, | |
| file_path TEXT, | |
| generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- ACTIVITY LOGS | |
| -- ========================================== | |
| CREATE TABLE activity_logs ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| user_id UUID REFERENCES users(id) ON DELETE SET NULL, | |
| action TEXT, | |
| metadata JSONB, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- ========================================== | |
| -- INDEXES FOR PERFORMANCE | |
| -- ========================================== | |
| CREATE INDEX idx_projects_user ON projects(user_id); | |
| CREATE INDEX idx_papers_project ON research_papers(project_id); | |
| CREATE INDEX idx_chunks_paper ON paper_chunks(paper_id); | |
| CREATE INDEX idx_analysis_project ON analysis_runs(project_id); | |
| CREATE INDEX idx_contradictions_analysis ON contradictions(analysis_id); | |
| CREATE INDEX idx_protocols_analysis ON experimental_protocols(analysis_id); | |
| CREATE INDEX idx_reasoning_analysis ON reasoning_traces(analysis_id); | |
| -- ========================================== | |
| -- ENABLE ROW LEVEL SECURITY (RLS) FOR SUPABASE | |
| -- ========================================== | |
| ALTER TABLE users ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE projects ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE research_papers ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE paper_chunks ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE analysis_runs ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE contradictions ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE research_gaps ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE experimental_protocols ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE reasoning_traces ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE exports ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE activity_logs ENABLE ROW LEVEL SECURITY; | |