rlt_salary/app/query.py

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