from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from ..database import get_db from ..deps import get_current_user, require_admin from ..models import Group, User from ..schemas import GroupCreate, GroupOut router = APIRouter(prefix="/groups", tags=["groups"]) @router.get("", response_model=list[GroupOut]) def list_groups( db: Session = Depends(get_db), _: User = Depends(get_current_user) ) -> list[Group]: return db.query(Group).order_by(Group.name).all() @router.post("", response_model=GroupOut, status_code=status.HTTP_201_CREATED) def create_group( payload: GroupCreate, db: Session = Depends(get_db), _: User = Depends(require_admin), ) -> Group: if db.query(Group).filter(Group.name == payload.name).first(): raise HTTPException(status.HTTP_409_CONFLICT, "Gruppe existiert bereits") group = Group(name=payload.name, min_stock=payload.min_stock) db.add(group) db.commit() db.refresh(group) return group @router.delete("/{group_id}", status_code=status.HTTP_204_NO_CONTENT) def delete_group( group_id: int, db: Session = Depends(get_db), _: User = Depends(require_admin), ) -> None: group = db.get(Group, group_id) if group is None: raise HTTPException(status.HTTP_404_NOT_FOUND, "Gruppe nicht gefunden") db.delete(group) db.commit()