"""House model."""
import uuid
from datetime import datetime
from sqlalchemy import Column, DateTime, ForeignKey, String
from sqlalchemy.orm import relationship
from app.database import Base

class House(Base):
    __tablename__ = "houses"
    id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
    title = Column(String(200), nullable=False)
    address = Column(String(500), nullable=True)
    slug = Column(String(200), unique=True, nullable=False, index=True)
    cover_image_url = Column(String(500), nullable=True)
    status = Column(String(50), default="draft", nullable=False)
    created_by = Column(String(36), ForeignKey("users.id", ondelete="SET NULL"), nullable=True)
    created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
    creator = relationship("User", back_populates="houses", foreign_keys=[created_by], lazy="selectin")
    floors = relationship("Floor", back_populates="house", lazy="selectin", cascade="all, delete-orphan")
    publish_versions = relationship("PublishVersion", back_populates="house", lazy="selectin", cascade="all, delete-orphan")
