from datetime import datetime from pydantic import BaseModel from typing import List, Optional class Host(BaseModel): host_id: str host_url: str host_name: str host_location: str host_about: str host_response_time: Optional[str] = None host_thumbnail_url: str host_picture_url: str host_response_rate: Optional[int] = None host_is_superhost: bool host_has_profile_pic: bool host_identity_verified: bool class Location(BaseModel): type: str coordinates: List[float] is_location_exact: bool class Address(BaseModel): street: str government_area: str market: str country: str country_code: str location: Location class Review(BaseModel): _id: str date: Optional[datetime] = None listing_id: str reviewer_id: str reviewer_name: Optional[str] = None comments: Optional[str] = None class Listing(BaseModel): _id: int listing_url: str name: str summary: str space: str description: str neighborhood_overview: Optional[str] = None notes: Optional[str] = None transit: Optional[str] = None access: str interaction: Optional[str] = None house_rules: str property_type: str room_type: str bed_type: str minimum_nights: int maximum_nights: int cancellation_policy: str last_scraped: Optional[datetime] = None calendar_last_scraped: Optional[datetime] = None first_review: Optional[datetime] = None last_review: Optional[datetime] = None accommodates: int bedrooms: Optional[float] = 0 beds: Optional[float] = 0 number_of_reviews: int bathrooms: Optional[float] = 0 amenities: List[str] price: int security_deposit: Optional[float] = None cleaning_fee: Optional[float] = None extra_people: int guests_included: int images: dict host: Host address: Address availability: dict review_scores: dict reviews: List[Review] text_embeddings: List[float] class SearchResultItem(BaseModel): name: str accommodates: Optional[int] = None bedrooms: Optional[int] = None address: Address space: str = None