from datetime import datetime from sqlmodel import SQLModel, Field, UniqueConstraint class ListingDecision(SQLModel, table=True): __table_args__ = ( UniqueConstraint( 'user_id', 'listing_id', 'listing_type', name='uq_decision_user_listing', ), ) id: int | None = Field(default=None, primary_key=True) user_id: int = Field(nullable=False, foreign_key="user.id", index=True) listing_id: int = Field(nullable=False, index=True) listing_type: str = Field(nullable=False) # "RENT" or "BUY" decision: str = Field(nullable=False) # "liked" | "disliked" | "seen" # Total price at the time the user marked the listing seen. Only set for # decision="seen"; used client-side to resurface listings whose price has # changed since the user dismissed them. price_at_decision: float | None = Field(default=None, nullable=True) created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow)