80 lines
1.2 KiB
Python
80 lines
1.2 KiB
Python
from typing import Optional
|
|
|
|
from schemas.base import BaseSchema, BaseResponse
|
|
|
|
|
|
# region Entities
|
|
|
|
|
|
class DealTagColorSchema(BaseSchema):
|
|
id: int
|
|
color: str
|
|
background_color: str
|
|
label: str
|
|
|
|
|
|
class CreateDealTagSchema(BaseSchema):
|
|
name: str
|
|
project_id: int
|
|
tag_color_id: int
|
|
|
|
|
|
class DealTagSchema(CreateDealTagSchema):
|
|
id: int
|
|
tag_color: DealTagColorSchema
|
|
|
|
|
|
class UpdateDealTagSchema(BaseSchema):
|
|
name: Optional[str] = None
|
|
tag_color: Optional[DealTagColorSchema] = None
|
|
|
|
|
|
# endregion
|
|
|
|
# region Requests
|
|
|
|
|
|
class CreateDealTagRequest(BaseSchema):
|
|
entity: CreateDealTagSchema
|
|
|
|
|
|
class UpdateDealTagRequest(BaseSchema):
|
|
entity: UpdateDealTagSchema
|
|
|
|
|
|
class SwitchDealTagRequest(BaseSchema):
|
|
tag_id: int
|
|
deal_id: Optional[int] = None
|
|
group_id: Optional[int] = None
|
|
|
|
|
|
# endregion
|
|
|
|
# region Responses
|
|
|
|
class GetDealTagsResponse(BaseSchema):
|
|
items: list[DealTagSchema]
|
|
|
|
|
|
class CreateDealTagResponse(BaseResponse):
|
|
entity: DealTagSchema
|
|
|
|
|
|
class UpdateDealTagResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class DeleteDealTagResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class SwitchDealTagResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class GetTagColorsResponse(BaseSchema):
|
|
items: list[DealTagColorSchema]
|
|
|
|
|
|
# endregion
|