from sqlalchemy.orm import Session from app.core.config import settings from app.core.security import get_password_hash from app.models.user import Subject, SystemSettings, User DEFAULT_SUBJECTS = [ "语文", "数学", "英语", "物理", "化学", "生物", "历史", "地理", "政治", ] def seed_subjects(db: Session) -> None: existing = {s.name for s in db.query(Subject).all()} for name in DEFAULT_SUBJECTS: if name not in existing: db.add(Subject(name=name)) db.commit() def seed_admin_and_settings(db: Session) -> None: if db.get(SystemSettings, 1) is None: db.add(SystemSettings(id=1, registration_enabled=True)) admin = db.query(User).filter(User.username == settings.ADMIN_DEFAULT_USERNAME).first() if admin is None: db.add( User( username=settings.ADMIN_DEFAULT_USERNAME, password_hash=get_password_hash(settings.ADMIN_DEFAULT_PASSWORD), is_superuser=True, ) ) elif not admin.is_superuser: admin.is_superuser = True db.commit()