Files
lab_ai/apps/schemas.py

51 lines
1.4 KiB
Python
Raw Permalink Normal View History

2026-01-26 11:55:42 +00:00
import re
from datetime import date
from typing import Optional
from pydantic import BaseModel, Field, field_validator
class AiUserCreate(BaseModel):
id: Optional[str] = None
name: str = Field(min_length=1, max_length=128)
email: str = Field(..., max_length=256)
dob: Optional[date] = None
gender: Optional[str] = Field(default=None, max_length=10)
@field_validator("email")
def validate_email(cls, v):
if not re.match(r"^[^@\s]+@[^@\s]+\.[^@\s]+$", v):
raise ValueError("invalid email")
return v
class AiUserUpdate(BaseModel):
name: Optional[str] = Field(default=None, min_length=1, max_length=128)
email: Optional[str] = Field(default=None, max_length=256)
dob: Optional[date] = None
gender: Optional[str] = Field(default=None, max_length=10)
@field_validator("email")
def validate_email(cls, v):
if not re.match(r"^[^@\s]+@[^@\s]+\.[^@\s]+$", v):
raise ValueError("invalid email")
return v
class AiUserFilter(BaseModel):
q: Optional[str] = None
name: Optional[str] = None
email: Optional[str] = None
gender: Optional[str] = None
dob_from: Optional[date] = None
dob_to: Optional[date] = None
created_from: Optional[str] = None
created_to: Optional[str] = None
page: int = Field(default=0, ge=0)
size: int = Field(default=20, ge=1, le=200)
sortby: str = "modified"
asc: bool = False