66 lines
1.1 KiB
Python
66 lines
1.1 KiB
Python
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
|