72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database.session import get_db
|
|
from app.domain.entities.team import TeamEntity
|
|
from app.infrastructure.dependencies import get_current_user, require_admin
|
|
from app.infrastructure.teams_service import TeamsService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get(
|
|
'/',
|
|
response_model=list[TeamEntity],
|
|
summary='Get all teams',
|
|
description='Returns all teams',
|
|
)
|
|
async def get_all_teams(
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
teams_service = TeamsService(db)
|
|
return await teams_service.get_all_teams()
|
|
|
|
|
|
@router.post(
|
|
'/',
|
|
response_model=Optional[TeamEntity],
|
|
summary='Create a new team',
|
|
description='Creates a new team',
|
|
)
|
|
async def create_team(
|
|
team: TeamEntity,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
teams_service = TeamsService(db)
|
|
return await teams_service.create_team(team)
|
|
|
|
|
|
@router.put(
|
|
'/{team_id}/',
|
|
response_model=Optional[TeamEntity],
|
|
summary='Update a team',
|
|
description='Updates a team',
|
|
)
|
|
async def create_team(
|
|
team_id: int,
|
|
team: TeamEntity,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(get_current_user),
|
|
):
|
|
teams_service = TeamsService(db)
|
|
return await teams_service.update_team(team_id, team)
|
|
|
|
|
|
@router.delete(
|
|
'/{team_id}/',
|
|
response_model=Optional[TeamEntity],
|
|
summary='Delete a team',
|
|
description='Delete a team',
|
|
)
|
|
async def create_team(
|
|
team_id: int,
|
|
db: AsyncSession = Depends(get_db),
|
|
user=Depends(require_admin),
|
|
):
|
|
teams_service = TeamsService(db)
|
|
return await teams_service.delete_team(team_id)
|