
- Update import from pydantic.BaseSettings to pydantic_settings.BaseSettings
- Add pydantic-settings==2.1.0 to requirements.txt for Pydantic v2 compatibility
- Implement application lifespan management for database initialization
- Add init_db.py for automatic database table creation and superuser setup
- Create test_imports.py for verifying import integrity
- Ensure proper startup sequence and error handling
This fixes the health check failure caused by Pydantic v2 migration changes.
🤖 Generated with BackendIM
Co-Authored-By: BackendIM <noreply@anthropic.com>
25 lines
899 B
Python
25 lines
899 B
Python
from sqlalchemy.orm import Session
|
|
from app.db.session import engine
|
|
from app.db.base import Base
|
|
from app.models import user, class_model, subject, grade, attendance, notification
|
|
from app.core.config import settings
|
|
from app.services.user import user_service
|
|
from app.schemas.user import UserCreate
|
|
from app.models.user import UserRole
|
|
|
|
def init_db(db: Session) -> None:
|
|
# Create tables
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
# Create initial superuser
|
|
user = user_service.get_by_email(db, email=settings.FIRST_SUPERUSER_EMAIL)
|
|
if not user:
|
|
user_in = UserCreate(
|
|
email=settings.FIRST_SUPERUSER_EMAIL,
|
|
password=settings.FIRST_SUPERUSER_PASSWORD,
|
|
first_name="System",
|
|
last_name="Administrator",
|
|
role=UserRole.ADMIN,
|
|
is_active=True
|
|
)
|
|
user = user_service.create(db, obj_in=user_in) |