File size: 2,025 Bytes
08fd094
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""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:
    # Reverse-order teardown mirrors the baseline create order.
    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)