Spaces:
Runtime error
Runtime error
from sqlmodel import create_engine, Session, SQLModel | |
from src.config import settings | |
# --- Database Engine Setup --- | |
# The database URL is constructed from the application settings. | |
# This makes it easy to switch between different database environments (e.g., dev, test, prod). | |
DATABASE_URL = settings.POSTGRES_URI | |
engine = create_engine(DATABASE_URL, echo=True) # echo=True logs SQL queries, useful for debugging | |
# --- Database Initialization --- | |
def create_db_and_tables(): | |
""" | |
Creates all database tables defined by SQLModel metadata. | |
This function is called once at application startup. | |
""" | |
print("Initializing database...") | |
SQLModel.metadata.create_all(engine) | |
print("Database tables created successfully (if they didn't exist).") | |
# --- Database Session Management --- | |
def get_session(): | |
""" | |
A FastAPI dependency that provides a database session for each request. | |
It ensures that the session is always closed after the request is finished, | |
even if an error occurs. | |
""" | |
with Session(engine) as session: | |
try: | |
yield session | |
finally: | |
session.close() | |