"""Startup-Seeds: erster Admin-Benutzer und die eingebauten Einheiten.""" from sqlalchemy.orm import Session from .config import get_settings from .models import Role, Unit, UnitKind, User from .security import hash_password # (Name, Art, Faktor zur kanonischen Basiseinheit) BUILTIN_UNITS: list[tuple[str, UnitKind, float]] = [ ("Stück", UnitKind.count, 1.0), ("Gramm", UnitKind.weight, 1.0), ("Kilogramm", UnitKind.weight, 1000.0), ("Milliliter", UnitKind.volume, 1.0), ("Liter", UnitKind.volume, 1000.0), ] def ensure_builtin_units(db: Session) -> None: changed = False for name, kind, factor in BUILTIN_UNITS: if not db.query(Unit).filter(Unit.name == name).first(): db.add(Unit(name=name, kind=kind, factor=factor, is_builtin=True)) changed = True if changed: db.commit() def ensure_first_admin(db: Session) -> None: settings = get_settings() has_users = db.query(User).first() is not None if has_users: return admin = User( username=settings.admin_username, password_hash=hash_password(settings.admin_password), role=Role.admin, ) db.add(admin) db.commit()