scientific-backend / init_db.sql
Dama12's picture
feat(database): enable row level security on all tables
b2c15d2
Raw
History Blame Contribute Delete
5.71 kB
-- ==========================================
-- 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;