from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from db.session import get_db from core.deps import get_current_admin from domains.groups.schemas import ( GroupCreate, GroupResponse, AddMemberRequest ) from domains.groups.service import ( create_new_group, add_member_to_group, ) router = APIRouter( prefix="/groups", tags=["groups"] ) @router.post( "/", response_model=GroupResponse ) async def create_group( payload: GroupCreate, db: AsyncSession = Depends(get_db), admin=Depends(get_current_admin) ): group = await create_new_group( db, payload.name ) return group @router.post("/{group_id}/members") async def add_member( group_id: str, payload: AddMemberRequest, db: AsyncSession = Depends(get_db), admin=Depends(get_current_admin) ): try: membership = await add_member_to_group( db, group_id, payload.user_id, ) except ValueError as e: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=str(e) ) return membership