cloud-api/src/database.py

41 lines
954 B
Python
Raw Normal View History

2026-04-06 12:41:49 +01:00
"""
Database connections and init
Exports:
- db_dependency
- Base (sqlalchemy base model)
"""
from typing import Annotated
2026-05-29 15:18:10 +01:00
from sqlalchemy import create_engine, StaticPool
from sqlalchemy.orm import DeclarativeBase, sessionmaker, Session
2026-04-06 12:41:49 +01:00
from fastapi import Depends
from src.constants import Environment
from src.config import SQLALCHEMY_DATABASE_URI, settings as global_settings
2026-04-06 12:41:49 +01:00
if global_settings.ENVIRONMENT == Environment.TESTING:
connect_args = {"check_same_thread": False}
2026-05-29 15:18:10 +01:00
engine = create_engine(SQLALCHEMY_DATABASE_URI.get_secret_value(), connect_args=connect_args, poolclass=StaticPool)
else:
2026-05-29 15:18:10 +01:00
engine = create_engine(SQLALCHEMY_DATABASE_URI.get_secret_value())
2026-04-06 12:41:49 +01:00
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
2026-04-06 12:41:49 +01:00
def get_db():
db = SessionLocal()
try:
yield db
except:
db.rollback()
raise
finally:
db.close()
2026-04-06 12:41:49 +01:00
db_dependency = Annotated[Session, Depends(get_db)]
class Base(DeclarativeBase):
pass