19 lines
615 B
Python
19 lines
615 B
Python
from sqlalchemy import create_engine
|
|
from sqlalchemy.engine import Engine
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
from app.db.models import Base
|
|
|
|
|
|
def create_db_engine(database_url: str) -> Engine:
|
|
connect_args = {"check_same_thread": False} if database_url.startswith("sqlite") else {}
|
|
return create_engine(database_url, connect_args=connect_args, future=True)
|
|
|
|
|
|
def create_session_factory(engine: Engine) -> sessionmaker[Session]:
|
|
return sessionmaker(bind=engine, autoflush=False, expire_on_commit=False)
|
|
|
|
|
|
def initialize_schema(engine: Engine) -> None:
|
|
Base.metadata.create_all(engine)
|