| 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() | |