from sqlalchemy import inspect, text from app.db.base import engine 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 " "ADD COLUMN completion_notified BOOLEAN DEFAULT 0" ) ) 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") )