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

1from sqlmodel import Session, create_engine, select 

2 

3from app import crud 

4from app.core.config import settings 

5from app.models import User, UserCreate 

6 

7engine = create_engine(str(settings.DATABASE_URL), pool_pre_ping=True) 

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/fastapi/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 # This works because the models are already imported and registered from app.models 

22 # SQLModel.metadata.create_all(engine) 

23 

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)