from fastapi import APIRouter, HTTPException, Depends from sqlmodel import Session, select from typing import List from ..model.models import GroupDB, GroupResponse, GroupCreate from ..services.database import engine group_router = APIRouter(prefix="/groups", tags=["Group"]) def get_session(): with Session(engine) as db: yield db def add_and_refresh(db: Session, obj): db.add(obj) db.commit() db.refresh(obj) return obj @group_router.get("/", response_model=List[GroupResponse]) def get_groups(*, db: Session = Depends(get_session)): groups = db.exec(select(GroupDB)).all() return groups @group_router.post("/", response_model=GroupResponse) def create_group(*, db: Session = Depends(get_session), group: GroupCreate): db_group = GroupDB.model_validate(group) add_and_refresh(db, db_group) return db_group @group_router.delete("/{group_id}") def delete_group(*, db: Session = Depends(get_session), group_id: int): db_group = db.get(GroupDB, group_id) if db_group is None: raise HTTPException(status_code=404, detail="Group not found") db.delete(db_group) db.commit() return {"message": "Group deleted successfully"}