Coverage for src / idx_api / schemas / tour.py: 100%
25 statements
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-28 11:09 -0700
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-28 11:09 -0700
1"""Tour request schemas."""
3from datetime import datetime
5from pydantic import BaseModel, EmailStr, Field
8class TourRequestCreate(BaseModel):
9 """Tour request from frontend."""
11 model_config = {"populate_by_name": True}
13 property_id: str = Field(..., alias="propertyId", description="Property listing ID")
14 property_address: str = Field(..., alias="propertyAddress", description="Property address for reference")
15 name: str = Field(..., min_length=1, max_length=200)
16 email: EmailStr
17 phone: str = Field(..., min_length=10, max_length=20)
18 preferred_date: str | None = Field(None, alias="preferredDate", description="ISO date string YYYY-MM-DD")
19 preferred_time: str | None = Field(
20 None,
21 alias="preferredTime",
22 description="morning, afternoon, or evening",
23 )
24 message: str | None = Field(None, max_length=2000)
27class TourRequestResponse(BaseModel):
28 """Tour request saved in database."""
30 id: int
31 property_id: str
32 property_address: str
33 name: str
34 email: str
35 phone: str
36 preferred_date: str | None
37 preferred_time: str | None
38 message: str | None
39 created_at: str
40 status: str
42 model_config = {"from_attributes": True}