from sqlalchemy import inspect, text from app.core.config import settings from app.core.database import engine def run_migrations() -> None: """Apply lightweight schema updates for existing databases.""" inspector = inspect(engine) if "students" not in inspector.get_table_names(): return columns = {col["name"] for col in inspector.get_columns("students")} if "school_level" not in columns: with engine.begin() as conn: conn.execute( text( "ALTER TABLE students ADD COLUMN school_level VARCHAR(32) " "NOT NULL DEFAULT 'junior_high'" ) ) if "users" in inspector.get_table_names(): user_columns = {col["name"] for col in inspector.get_columns("users")} if "is_superuser" not in user_columns: with engine.begin() as conn: conn.execute( text("ALTER TABLE users ADD COLUMN is_superuser BOOLEAN NOT NULL DEFAULT FALSE") ) conn.execute( text( f"UPDATE users SET is_superuser = TRUE " f"WHERE username = '{settings.ADMIN_DEFAULT_USERNAME}'" ) )