from datetime import datetime from typing import List, Optional from schemas.base import OkMessageSchema, BaseSchema, PaginationInfoSchema from schemas.user import UserSchema # region Entities class WorkShiftSchema(BaseSchema): id: int started_at: datetime finished_at: Optional[datetime] = None is_paused: Optional[bool] = None user: UserSchema class WorkShiftRowSchema(BaseSchema): work_shift: WorkShiftSchema total_hours: Optional[float] = None pause_hours: Optional[float] = None # endregion # region Responses class StartShiftResponse(OkMessageSchema): pass class FinishShiftResponse(OkMessageSchema): pass class FinishShiftByIdResponse(OkMessageSchema): pass class GetWorkShiftsResponse(BaseSchema): shifts: List[WorkShiftRowSchema] pagination_info: PaginationInfoSchema class DeleteShiftResponse(OkMessageSchema): pass class StartPauseByUserIdResponse(OkMessageSchema): pass class FinishPauseByUserIdResponse(OkMessageSchema): pass class StartPauseByShiftIdResponse(OkMessageSchema): pass class FinishPauseByShiftIdResponse(OkMessageSchema): pass # endregion