pegavisao / db_ready.py
Roudrigus's picture
Upload 17 files
3168916 verified
# 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