| """repo baseline schema |
| |
| Revision ID: 20260521_1000 |
| Revises: |
| Create Date: 2026-05-21 16:20:00 |
| """ |
|
|
| from __future__ import annotations |
|
|
| from pathlib import Path |
| import sys |
|
|
| from alembic import op |
|
|
| REPO_ROOT = Path(__file__).resolve().parents[3] |
| if str(REPO_ROOT) not in sys.path: |
| sys.path.insert(0, str(REPO_ROOT)) |
|
|
| from database.schema_manifest import iter_baseline_paths |
|
|
|
|
| revision = "20260521_1000" |
| down_revision = None |
| branch_labels = None |
| depends_on = None |
|
|
|
|
| def _execute_sql_file(path: Path) -> None: |
| sql_text = path.read_text(encoding="utf-8") |
| statements = [statement.strip() for statement in sql_text.split(";") if statement.strip()] |
| for statement in statements: |
| op.execute(statement) |
|
|
|
|
| def upgrade() -> None: |
| for path in iter_baseline_paths(): |
| _execute_sql_file(path) |
|
|
|
|
| def downgrade() -> None: |
| |
| drop_statements = [ |
| "DROP VIEW IF EXISTS latest_evidence_assessments", |
| "DROP TABLE IF EXISTS chunk_embeddings", |
| "DROP TABLE IF EXISTS claim_relationships", |
| "DROP TABLE IF EXISTS molecule_disease_links", |
| "DROP TABLE IF EXISTS claim_risk_links", |
| "DROP TABLE IF EXISTS claim_endpoint_links", |
| "DROP TABLE IF EXISTS claim_study_links", |
| "DROP TABLE IF EXISTS evidence_assessments", |
| "DROP TABLE IF EXISTS claim_evidence_links", |
| "DROP TABLE IF EXISTS claims", |
| "DROP TABLE IF EXISTS chunks", |
| "DROP TABLE IF EXISTS safety_risks", |
| "DROP TABLE IF EXISTS endpoints", |
| "DROP TABLE IF EXISTS studies", |
| "DROP TABLE IF EXISTS geographies", |
| "DROP TABLE IF EXISTS populations", |
| "DROP TABLE IF EXISTS molecules", |
| "DROP TABLE IF EXISTS diseases", |
| "ALTER TABLE sources DROP CONSTRAINT IF EXISTS fk_sources_current_version_id", |
| "DROP TABLE IF EXISTS source_versions", |
| "DROP TABLE IF EXISTS sources", |
| ] |
| for statement in drop_statements: |
| op.execute(statement) |
|
|