"""House image model for property photos."""
import uuid
from datetime import datetime
from sqlalchemy.dialects.postgresql import UUID
from app import db


class HouseImage(db.Model):
    """House property image model."""
    
    __tablename__ = 'house_images'
    
    # Primary Key
    id = db.Column(db.String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
    
    # House Relationship
    house_id = db.Column(db.String(36), db.ForeignKey('houses.id'), nullable=False, index=True)

    # Image Details
    image_url = db.Column(db.String(500), nullable=False)
    is_primary = db.Column(db.Boolean, default=False, nullable=False)
    display_order = db.Column(db.Integer, default=0, nullable=False)
    caption = db.Column(db.String(200), nullable=True)
    
    # Timestamp
    created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
    
    def to_dict(self):
        """Convert image to dictionary."""
        return {
            'id': str(self.id),
            'image_url': self.image_url,
            'is_primary': self.is_primary,
            'display_order': self.display_order,
            'caption': self.caption
        }
    
    def __repr__(self):
        """String representation of HouseImage."""
        return f'<HouseImage {self.id}>'