# core/db_ready.py from sqlalchemy import text from sqlalchemy.exc import OperationalError from db import init_db, get_session_safe from models import Course def ensure_db_ready(): """ Garante que o schema exista antes de utilizar a sessão. """ db = get_session_safe() try: db.execute(text("SELECT 1")) try: db.query(Course).limit(1).all() return db except OperationalError: db.close() init_db() db2 = get_session_safe() try: db2.query(Course).limit(1).all() return db2 except Exception: db2.close() raise except Exception: db.close() raise def commit_with_retry(db, on_retry_init: bool = True) -> None: try: db.commit() except OperationalError: db.rollback() if on_retry_init: init_db() try: db.commit() return except Exception as e2: db.rollback() raise e2 raise