from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker from app.core.settings import settings cloud_sql_tools = settings.db_cloud_sql_connection_name or settings.cloud_sql_connection_name if cloud_sql_tools: # MySQL via Unix socket (Cloud SQL) DATABASE_URL = ( f"mysql+pymysql://{settings.db_user}:{settings.db_password}@/{settings.db_name}" f"?unix_socket=/cloudsql/{cloud_sql_tools}" ) else: # Ambiente local/VPN - MySQL em host/porta configurados DATABASE_URL = ( f"mysql+pymysql://{settings.db_user}:{settings.db_password}@" f"{settings.db_host}:{settings.db_port}/{settings.db_name}" ) engine = create_engine( DATABASE_URL, pool_pre_ping=True, connect_args={"connect_timeout": 5} # Evita travar o startup por muito tempo ) SessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=engine ) Base = declarative_base()