system-prompts-and-models-o.../salesflow-saas/backend/app/models/property.py

34 lines
1.6 KiB
Python

from sqlalchemy import Column, String, Integer, Text, DateTime, Numeric, ForeignKey
from sqlalchemy.dialects.postgresql import UUID, JSONB
from sqlalchemy.orm import relationship
from datetime import datetime, timezone
from app.models.base import BaseModel
class Property(BaseModel):
__tablename__ = "properties"
tenant_id = Column(UUID(as_uuid=True), ForeignKey("tenants.id"), nullable=False, index=True)
title = Column(String(255), nullable=False)
title_ar = Column(String(255))
property_type = Column(String(50)) # apartment, villa, land, office, commercial
status = Column(String(50), default="available") # available, reserved, sold, rented
price = Column(Numeric(14, 2))
currency = Column(String(3), default="SAR")
area_sqm = Column(Numeric(10, 2))
bedrooms = Column(Integer)
bathrooms = Column(Integer)
district = Column(String(100)) # حي النرجس، حي الياسمين، etc.
city = Column(String(100), default="الرياض")
address = Column(Text)
latitude = Column(Numeric(10, 8))
longitude = Column(Numeric(11, 8))
images = Column(JSONB, default=list)
features = Column(JSONB, default=list) # مسبح، حديقة، مصعد، etc.
description = Column(Text)
description_ar = Column(Text)
assigned_to = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True)
updated_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc))
assigned_user = relationship("User", foreign_keys=[assigned_to])