Add services layer, tests, streaming UI, and cleanup legacy code
This commit is contained in:
parent
5514fa6381
commit
d205d15c74
62 changed files with 3729 additions and 1024 deletions
|
|
@ -5,7 +5,7 @@ from datetime import datetime, timedelta
|
|||
import enum
|
||||
import json
|
||||
from typing import Any, Dict, List
|
||||
from pydantic import BaseModel
|
||||
from pydantic import BaseModel, Field as PydanticField
|
||||
from rec import routing
|
||||
from sqlmodel import JSON, TEXT, SQLModel, Field
|
||||
|
||||
|
|
@ -80,7 +80,10 @@ class Listing(SQLModel, table=False):
|
|||
|
||||
@property
|
||||
def is_removed(self) -> bool:
|
||||
return not self.additional_info["property"]["visible"]
|
||||
if not self.additional_info:
|
||||
return False
|
||||
property_info = self.additional_info.get("property", {})
|
||||
return not property_info.get("visible", True)
|
||||
|
||||
@property
|
||||
def price_per_square_meter(self) -> float | None:
|
||||
|
|
@ -231,14 +234,16 @@ class ListingType(enum.StrEnum):
|
|||
RENT = "RENT"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class QueryParameters(BaseModel):
|
||||
"""Query parameters for filtering listings."""
|
||||
model_config = {"frozen": True}
|
||||
|
||||
listing_type: ListingType
|
||||
min_bedrooms: int = 1
|
||||
max_bedrooms: int = 999
|
||||
min_price: int = 0
|
||||
max_price: int = 10_000_000
|
||||
district_names: set[str] = dataclasses.field(default_factory=set)
|
||||
district_names: set[str] = PydanticField(default_factory=set)
|
||||
radius: float = 0
|
||||
page_size: int = 500 # items per page
|
||||
max_days_since_added: int = 14 # for buy listings
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue