Files
Crm-Backend/schemas/deal.py

84 lines
1.6 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
project_id: int
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