32 lines
952 B
Python
32 lines
952 B
Python
from datetime import datetime
|
|
from pydantic import BaseModel, validator
|
|
|
|
|
|
class Query(BaseModel):
|
|
dt_from: str
|
|
dt_upto: str
|
|
group_type: str
|
|
|
|
@validator('group_type', pre=True, always=True)
|
|
def validate_group_type(cls, v):
|
|
if v not in ['month', 'day', 'hour']:
|
|
raise ValueError('Invalid group_type')
|
|
return v
|
|
|
|
@validator('dt_from', pre=True, always=True)
|
|
def validate_dt_from(cls, v):
|
|
try:
|
|
datetime.strptime(v, '%Y-%m-%dT%H:%M:%S')
|
|
except ValueError:
|
|
raise ValueError('Invalid dt_from')
|
|
return v
|
|
|
|
@validator('dt_upto', pre=True, always=True)
|
|
def validate_dt_upto(cls, v, values):
|
|
try:
|
|
datetime.strptime(v, '%Y-%m-%dT%H:%M:%S')
|
|
except ValueError:
|
|
raise ValueError('Invalid dt_upto')
|
|
if values['dt_from'] > v:
|
|
raise ValueError('dt_upto should be later than dt_from')
|
|
return v |