Neda/Back/domains/groups/api.py
2026-03-06 20:01:04 +03:30

63 lines
1.2 KiB
Python

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