brestok's picture
init
a7ed1bd
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)