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, get_current_user from domains.groups.schemas import ( GroupCreate, GroupResponse, AddMemberRequest ) from domains.groups.service import ( create_new_group, add_member_to_group, list_user_groups ) 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, payload.description ) 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) ): membership = await add_member_to_group( db, group_id, payload.user_id, payload.role ) return membership @router.get("/me", response_model=list[GroupResponse]) async def my_groups( db: AsyncSession = Depends(get_db), user = Depends(get_current_user) ): return await list_user_groups( db, user.id )