class EventSortKey(Enum):
create_time = "create_time"
event_uuid = "event_uuid"
class SortOrder(Enum):
asc = "asc"
desc = "desc"
class EventQueryModel(BaseModel):
keywords: Optional[list[str]]
data_sources: Optional[list[int]]
event_sources: Optional[list[int]]
event_types: Optional[list[int]]
event_start_time: datetime.datetime
event_end_time: datetime.datetime
event_regions: Optional[list[int]] # todo: how to support this?
event_related_orgs: Optional[list[int]] # todo: how to support this?
masked: Optional[bool] = True
sort_key: Optional[list[str]] = Field(default=["create_time"])
sort_order: Optional[list[str]] = Field(default=["asc"])
class Config:
orm_mode = True
# @validator("sort_key")
# def check_sort_key(cls, sort_key):
# if len(sort_key) != len(set(sort_key)):
# raise ValueError("The sort_key is not repeat")
# sort_key_list = [item.value for item in EventSortKey]
# intersection = set(sort_key) & set(sort_key_list)
# if len(sort_key) != len(intersection):
# raise ValueError("The sort_key is invalid")
# return sort_key
@validator("sort_key")
def check_sort_key(cls, sort_key):
if len(sort_key) != len(set(sort_key)):
raise ValueError("The sort_key is not repeat")
_ = [EventSortKey(x) for x in sort_key]
return sort_key
# @validator("sort_order")
# def check_sort_order(cls, sort_order):
# sort_order_list = [item.value for item in SortOrder]
# intersection = set(sort_order) & set(sort_order_list)
# if len(set(sort_order)) != len(intersection):
# raise ValueError("The sort_order is invalid")
# return sort_order
@validator("sort_order")
def check_sort_order(cls, sort_order):
_ = [SortOrder(x) for x in sort_order]
return sort_order
Python 枚举类的代码校验优化
于 2024-04-19 12:10:06 首次发布