Skip to content

Commit 7a9816e

Browse files
committed
refactor: 使用校验器替代Field正则
1 parent c316a65 commit 7a9816e

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

app/validator/schema.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import re
12
from enum import Enum
23
from inspect import Parameter
34
from typing import Any, List, Optional
45

56
from flask import g
67
from lin import BaseModel
78
from lin.exception import ParameterError
8-
from pydantic import Field
9+
from pydantic import Field, validator
910

1011
datetime_regex = "^((([1-9][0-9][0-9][0-9]-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|(20[0-3][0-9]-(0[2469]|11)-(0[1-9]|[12][0-9]|30))) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9])$"
1112

@@ -25,15 +26,17 @@ class NameListSchema(BaseModel):
2526
class LogQuerySearchSchema(BaseModel):
2627
keyword: Optional[str] = None
2728
name: Optional[str] = None
28-
start: Optional[str] = Field(
29-
None, regex=datetime_regex, description="YY-MM-DD HH:MM:SS"
30-
)
31-
end: Optional[str] = Field(
32-
None, regex=datetime_regex, description="YY-MM-DD HH:MM:SS"
33-
)
29+
start: Optional[str] = Field(None, description="YY-MM-DD HH:MM:SS")
30+
end: Optional[str] = Field(None, description="YY-MM-DD HH:MM:SS")
3431
count: int = Field(5, gt=0, lt=16, description="0 < count < 16")
3532
page: int = 0
3633

34+
@validator("start", "end")
35+
def datetime_match(cls, v, values, **kwargs):
36+
if re.match(datetime_regex, v):
37+
return v
38+
raise ValueError("时间格式有误")
39+
3740
@staticmethod
3841
def offset_handler(req, resp, req_validation_error, instance):
3942
g.offset = req.context.query.count * req.context.query.page

0 commit comments

Comments
 (0)