Neda/Back/domains/groups/api.py
2026-03-06 15:16:41 +03:30

72 lines
1.3 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, 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
)