Coverage for app/core/db.py: 80%
10 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-26 10:48 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-26 10:48 +0000
1from sqlmodel import Session, create_engine, select
3from app import crud
4from app.core.config import settings
5from app.models import User, UserCreate
7engine = create_engine(str(settings.DATABASE_URL), pool_pre_ping=True)
10# make sure all SQLModel models are imported (app.models) before initializing DB
11# otherwise, SQLModel might fail to initialize relationships properly
12# for more details: https://github.com/fastapi/full-stack-fastapi-template/issues/28
15def init_db(session: Session) -> None:
16 # Tables should be created with Alembic migrations
17 # But if you don't want to use migrations, create
18 # the tables un-commenting the next lines
19 # from sqlmodel import SQLModel
21 # This works because the models are already imported and registered from app.models
22 # SQLModel.metadata.create_all(engine)
24 user = session.exec(
25 select(User).where(User.email == settings.FIRST_SUPERUSER)
26 ).first()
27 if not user:
28 user_in = UserCreate(
29 email=settings.FIRST_SUPERUSER,
30 password=settings.FIRST_SUPERUSER_PASSWORD,
31 is_superuser=True,
32 )
33 user = crud.create_user(session=session, user_create=user_in)