from pydantic import BaseModel from typing import Optional, List from datetime import datetime from decimal import Decimal from app.models.property import PropertyType, PropertyStatus class PropertyBase(BaseModel): title: str description: str price: Decimal location: str state: str lga: str property_type: PropertyType status: PropertyStatus = PropertyStatus.FOR_RENT bedrooms: Optional[int] = 0 bathrooms: Optional[int] = 0 toilets: Optional[int] = 0 amenities: Optional[List[str]] = [] images: Optional[List[str]] = [] is_affordable: bool = False class PropertyCreate(PropertyBase): pass class PropertyUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None price: Optional[Decimal] = None location: Optional[str] = None state: Optional[str] = None lga: Optional[str] = None property_type: Optional[PropertyType] = None status: Optional[PropertyStatus] = None bedrooms: Optional[int] = None bathrooms: Optional[int] = None toilets: Optional[int] = None amenities: Optional[List[str]] = None images: Optional[List[str]] = None is_affordable: Optional[bool] = None class PropertyResponse(PropertyBase): id: int owner_id: int is_approved: bool is_active: bool created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True