Files
Crm-Backend/schemas/deal.py
2025-10-19 12:12:08 +04:00

83 lines
1.5 KiB
Python

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.deal_tag import DealTagSchema
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]
tags: list[DealTagSchema]
# 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