from uuid import UUID

from django.shortcuts import get_object_or_404
from ninja import Router

from api.v1.schemas import BadRequestError, NotFoundError, UnauthorizedError
from api.v1.team.schemas import CreateTeamSchema, TeamSchemaOut
from apps.team.models import Team

router = Router()


@router.post(
    "",
    response={
        201: TeamSchemaOut,
        400: BadRequestError,
        401: UnauthorizedError,
    },
    description="Create team. Note: members array must have team members uuid, default can be empty",
)
def create_team(request, team_data: CreateTeamSchema) -> (int, TeamSchemaOut):
    team = Team(name=team_data.name, owner=request.auth)
    team.members.add(request.auth)
    team.save()
    return 201, team


@router.get(
    "{team_id}",
    response={
        200: TeamSchemaOut,
        401: UnauthorizedError,
        404: NotFoundError,
    },
)
def get_team(request, team_id: UUID) -> (int, TeamSchemaOut):
    return get_object_or_404(Team, pk=team_id)
