Coverage for app/core/db.py: 81%
16 statements
« prev ^ index » next coverage.py v7.6.1, created at 2026-03-24 11:40 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2026-03-24 11:40 +0000
1from sqlmodel import Session, create_engine, select
3from app import crud
4from app.core.config import settings
5from app.models import Priority, User, UserCreate
7engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI))
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/tiangolo/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 # from app.core.engine import engine
22 # This works because the models are already imported and registered from app.models
23 # SQLModel.metadata.create_all(engine)
25 user = session.exec(
26 select(User).where(User.email == settings.FIRST_SUPERUSER)
27 ).first()
28 if not user:
29 user_in = UserCreate(
30 email=settings.FIRST_SUPERUSER,
31 password=settings.FIRST_SUPERUSER_PASSWORD,
32 is_superuser=True,
33 )
34 user = crud.create_user(session=session, user_create=user_in)
36 # Seed priority rows if missing
37 default_priorities = [
38 (1, "urgent", 1),
39 (2, "high", 2),
40 (3, "medium", 3),
41 (4, "low", 4),
42 ]
43 for pid, name, value in default_priorities:
44 existing = session.get(Priority, pid)
45 if not existing:
46 session.add(Priority(id=pid, name=name, value=value))
47 session.commit()