|
from app import settings as config |
|
from sqlalchemy import create_engine |
|
from sqlalchemy.ext.declarative import declarative_base |
|
from sqlalchemy.orm import sessionmaker |
|
|
|
DATABASE_USERNAME = config.DATABASE_USERNAME |
|
DATABASE_PASSWORD = config.DATABASE_PASSWORD |
|
DATABASE_HOST = config.DATABASE_HOST |
|
DATABASE_NAME = config.DATABASE_NAME |
|
|
|
SQLALCHEMY_DATABASE_URL = f"postgresql://{DATABASE_USERNAME}:{DATABASE_PASSWORD}@{DATABASE_HOST}/{DATABASE_NAME}" |
|
|
|
engine = create_engine(SQLALCHEMY_DATABASE_URL) |
|
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) |
|
|
|
Base = declarative_base() |
|
|
|
|
|
def get_db(): |
|
""" |
|
Provides a database session for dependency injection. |
|
|
|
This function is used to obtain a new database session instance from the |
|
`SessionLocal` factory. It is intended to be used with dependency injection |
|
in FastAPI to manage database sessions. |
|
|
|
Yields: |
|
Session: A SQLAlchemy database session. |
|
|
|
Notes: |
|
The session is automatically closed after use to ensure proper resource management. |
|
""" |
|
db = SessionLocal() |
|
try: |
|
yield db |
|
finally: |
|
db.close() |
|
|