Add iOS method for sync

This commit is contained in:
t0xa 2026-10-23 21:22:19 +03:00
parent 55a7168fcc
commit 93275d19b5

View file

@ -1,6 +1,6 @@
from typing import List from typing import List
from fastapi import APIRouter, Depends, HTTPException from fastapi import APIRouter, Depends, HTTPException, status
from app.api.deps import ( from app.api.deps import (
get_current_user, get_current_user,
@ -70,6 +70,26 @@ async def get_training(
return training return training
@router.post("/", response_model=TrainingDTO, status_code=status.HTTP_201_CREATED)
async def create_training(
payload: TrainingUpdate,
user: UserDTO = Depends(get_current_user),
repository: TrainingRepository = Depends(get_training_repository),
user_repository: UserRepository = Depends(get_user_repository),
):
"""Create a training. Only a superuser may create it for another trainee."""
if payload.trainee_id != user.id:
if not user.is_superuser:
raise HTTPException(
status_code=403, detail="Only a superuser can create a training for another user"
)
await _check_participant(user_repository, payload.trainee_id, UserRole.trainee)
if payload.trainer_id is not None:
await _check_participant(user_repository, payload.trainer_id, UserRole.trainer)
training_id = await repository.save(TrainingDTO.model_validate(payload.model_dump()))
return await repository.get(training_id)
@router.put("/{training_id}/", response_model=TrainingDTO) @router.put("/{training_id}/", response_model=TrainingDTO)
async def update_training( async def update_training(
training_id: int, training_id: int,