class SubjectIn(BaseModel): subject: str @router.get("/list") async def list_subjects(q: str = "", page: int = 1, limit: int = 100, user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db)): stmt = select(SubjectLine).where(SubjectLine.user_id == user.id) if q: stmt = stmt.where(SubjectLine.subject.ilike(f"%{q}%")) --- class TemplateIn(BaseModel): name: str body_html: str body_text: str = "" subject_hint: str = "" @router.get("/list") async def list_templates(user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db)): rows = (await db.execute(select(EmailTemplate).where(EmailTemplate.user_id == user.id) --- class PhoneIn(BaseModel): phone: str label: str = "" @field_validator("phone") @classmethod def valid_phone(cls, v): v = v.strip() if not PHONE_RE.match(v): raise ValueError("Invalid phone number format")