from datetime import datetime from typing import Optional from modules.clients.schemas.client import ClientSchema from schemas.base import BaseSchema, BaseResponse, PaginationInfoSchema from schemas.board import BoardSchema from schemas.deal_group import DealGroupSchema from schemas.status import StatusSchema # region Entities class DealSchema(BaseSchema): id: int name: str lexorank: str status: StatusSchema board: BoardSchema created_at: datetime group: Optional[DealGroupSchema] # FF module products_quantity: int = 0 total_price: float = 0 # clients module client: Optional[ClientSchema] = None class CreateDealSchema(BaseSchema): name: str board_id: int lexorank: str status_id: int client_id: Optional[int] = None class UpdateDealSchema(BaseSchema): name: Optional[str] = None lexorank: Optional[str] = None board_id: Optional[int] = None status_id: Optional[int] = None client: Optional[ClientSchema] = None # endregion # region Requests class CreateDealRequest(BaseSchema): entity: CreateDealSchema class UpdateDealRequest(BaseSchema): entity: UpdateDealSchema # endregion # region Responses class GetDealsResponse(BaseSchema): items: list[DealSchema] pagination_info: PaginationInfoSchema class CreateDealResponse(BaseResponse): entity: DealSchema class UpdateDealResponse(BaseResponse): pass class DeleteDealResponse(BaseResponse): pass # endregion