"""Hotspot model."""
import uuid
from datetime import datetime
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, JSON, String
from sqlalchemy.orm import relationship
from app.database import Base

class Hotspot(Base):
    __tablename__ = "hotspots"
    id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
    from_pano_id = Column(String(36), ForeignKey("panoramas.id", ondelete="CASCADE"), nullable=False, index=True)
    to_pano_id = Column(String(36), ForeignKey("panoramas.id", ondelete="SET NULL"), nullable=True)
    yaw = Column(Float, nullable=False)
    pitch = Column(Float, nullable=False)
    type = Column(String(50), nullable=False)
    label = Column(String(200), nullable=True)
    confidence = Column(Float, default=1.0, nullable=False)
    status = Column(String(50), default="pending_review", nullable=False)
    created_by = Column(String(20), nullable=False)
    extra_data = Column(JSON, nullable=True)
    created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
    from_pano = relationship("Panorama", foreign_keys=[from_pano_id], back_populates="hotspots_from", lazy="selectin")
    to_pano = relationship("Panorama", foreign_keys=[to_pano_id], back_populates="hotspots_to", lazy="selectin")
