Files
2026-06-16 09:19:32 +03:00

40 lines
1.5 KiB
Python

from sqlalchemy import inspect, text
from app.db.base import engine
from app.db.dialect import bool_literal
def run_migrations() -> None:
inspector = inspect(engine)
if "pomodoro_sessions" in inspector.get_table_names():
columns = {col["name"] for col in inspector.get_columns("pomodoro_sessions")}
with engine.begin() as conn:
if "phase" not in columns:
conn.execute(
text("ALTER TABLE pomodoro_sessions ADD COLUMN phase VARCHAR(32) DEFAULT 'work'")
)
if "completion_notified" not in columns:
conn.execute(
text(
"ALTER TABLE pomodoro_sessions "
f"ADD COLUMN completion_notified BOOLEAN DEFAULT {bool_literal(engine, False)}"
)
)
if "messages" in inspector.get_table_names():
columns = {col["name"] for col in inspector.get_columns("messages")}
with engine.begin() as conn:
if "reasoning_json" not in columns:
conn.execute(text("ALTER TABLE messages ADD COLUMN reasoning_json TEXT"))
if "pomodoro_cycles" not in inspector.get_table_names():
return
columns = {col["name"] for col in inspector.get_columns("pomodoro_cycles")}
with engine.begin() as conn:
if "chat_notify_seq" not in columns:
conn.execute(
text("ALTER TABLE pomodoro_cycles ADD COLUMN chat_notify_seq INTEGER DEFAULT 0")
)