File size: 2,162 Bytes
cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 a7ed1bd cd46ce5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | from fastapi import Depends
from cbh.api.account.models import AccountModel
from cbh.api.availability.db_requests import update_availability_obj
from cbh.api.availability.schemas import (
UpdateAvailabilityRequest,
)
from cbh.api.common.db_requests import get_obj_by_id
from cbh.core.security import PermissionDependency
from cbh.api.account.dto import AccountType
from cbh.core.wrappers import CbhResponseWrapper
from cbh.api.availability.models import AvailabilityModel
from cbh.api.availability import availability_router
@availability_router.get("")
async def get_own_availability(
account: AccountModel = Depends(PermissionDependency([AccountType.COACH])),
) -> CbhResponseWrapper[AvailabilityModel]:
availability = await get_obj_by_id(
AvailabilityModel, None, additional_filter={"coach.id": account.id}
)
return CbhResponseWrapper(data=availability)
@availability_router.get("/{coachId}")
async def get_availability(
coachId: str,
_: AccountModel = Depends(
PermissionDependency([AccountType.ADMIN, AccountType.USER])
),
) -> CbhResponseWrapper[AvailabilityModel]:
"""
Get availability by coach ID.
"""
availability = await get_obj_by_id(
AvailabilityModel, None, additional_filter={"coach.id": coachId}
)
return CbhResponseWrapper(data=availability)
@availability_router.put("")
async def update_own_availability(
availability: UpdateAvailabilityRequest,
account: AccountModel = Depends(PermissionDependency([AccountType.COACH])),
) -> CbhResponseWrapper[AvailabilityModel]:
"""
Update own availability.
"""
availability = await update_availability_obj(availability, account.id)
return CbhResponseWrapper(data=availability)
@availability_router.put("/{coachId}")
async def update_availability(
coachId: str,
availability: UpdateAvailabilityRequest,
_: AccountModel = Depends(PermissionDependency([AccountType.ADMIN])),
) -> CbhResponseWrapper[AvailabilityModel]:
"""
Update availability.
"""
availability = await update_availability_obj(availability, coachId)
return CbhResponseWrapper(data=availability)
|