presentercoach / apps /api /src /app /schema_upgrades.py
nathycodes's picture
Deploy Tech Presenter Coach
ec17af3
Raw History Blame Contribute Delete
1.39 kB
from sqlalchemy import inspect
from app.db import engine
SESSION_COLUMN_DDL: dict[str, str] = {
"document_path": "ALTER TABLE sessions ADD COLUMN document_path VARCHAR(1024)",
"document_name": "ALTER TABLE sessions ADD COLUMN document_name VARCHAR(255)",
"document_mime_type": "ALTER TABLE sessions ADD COLUMN document_mime_type VARCHAR(255)",
"document_blocks_json": "ALTER TABLE sessions ADD COLUMN document_blocks_json TEXT",
"curriculum_day": "ALTER TABLE sessions ADD COLUMN curriculum_day INTEGER",
"exercise_id": "ALTER TABLE sessions ADD COLUMN exercise_id VARCHAR(100)",
"story_framework": "ALTER TABLE sessions ADD COLUMN story_framework VARCHAR(80)",
"target_keywords_json": "ALTER TABLE sessions ADD COLUMN target_keywords_json TEXT",
"teleprompter_script": "ALTER TABLE sessions ADD COLUMN teleprompter_script TEXT",
}
def apply_startup_schema_upgrades() -> None:
inspector = inspect(engine)
if "sessions" not in inspector.get_table_names():
return
existing_columns = {column["name"] for column in inspector.get_columns("sessions")}
statements = [ddl for column_name, ddl in SESSION_COLUMN_DDL.items() if column_name not in existing_columns]
if not statements:
return
with engine.begin() as connection:
for statement in statements:
connection.exec_driver_sql(statement)