|
from sqlmodel import SQLModel, create_engine, Session |
|
from typing import Generator |
|
from contextlib import contextmanager |
|
|
|
from config.settings import settings |
|
|
|
|
|
engine = create_engine(settings.DATABASE_URL, echo=True if settings.LOG_LEVEL == "DEBUG" else False) |
|
|
|
def create_db_and_tables(): |
|
SQLModel.metadata.create_all(engine) |
|
|
|
@contextmanager |
|
def get_session_context() -> Generator[Session, None, None]: |
|
session = Session(engine) |
|
try: |
|
yield session |
|
session.commit() |
|
except Exception: |
|
session.rollback() |
|
raise |
|
finally: |
|
session.close() |
|
|
|
def get_session() -> Generator[Session, None, None]: |
|
|
|
|
|
with Session(engine) as session: |
|
yield session |