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

1from sqlmodel import Session, create_engine, select 

2 

3from app import crud 

4from app.core.config import settings 

5from app.models import Priority, User, UserCreate 

6 

7engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI)) 

8 

9 

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 

13 

14 

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 

20 

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) 

24 

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) 

35 

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()