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

1"""Tour request schemas.""" 

2 

3from datetime import datetime 

4 

5from pydantic import BaseModel, EmailStr, Field 

6 

7 

8class TourRequestCreate(BaseModel): 

9 """Tour request from frontend.""" 

10 

11 model_config = {"populate_by_name": True} 

12 

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) 

25 

26 

27class TourRequestResponse(BaseModel): 

28 """Tour request saved in database.""" 

29 

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 

41 

42 model_config = {"from_attributes": True}