from sqlalchemy import Column, String
from sqlalchemy.dialects.mysql import INTEGER, VARCHAR, BIGINT, ENUM
from sqlalchemy.orm import relationship
from app.models.generated_tattoo_history import GeneratedTattooHistory
from app.models.user_device_login import UserDeviceLogin

# from app.db.base import Base  # adjust if needed
from app.db.base_class import Base

class UserDevice(Base):
    __tablename__ = "user_devices"

    user_device_id = Column(INTEGER, primary_key=True, autoincrement=True)
    device_unique_id = Column(VARCHAR(255), nullable=False, index=True)
    device_name = Column(VARCHAR(255), nullable=False)
    device_token = Column(VARCHAR(255), nullable=True)

    device_type = Column(VARCHAR,nullable=False, default="I")
    app_version = Column(VARCHAR(255), nullable=False)

    created_at = Column(BIGINT, nullable=False)
    updated_at = Column(BIGINT, nullable=False)

    # Relationships
    logins = relationship("UserDeviceLogin", back_populates="device", cascade="all, delete-orphan")
    tattoo_histories = relationship(
        "GeneratedTattooHistory",
        back_populates="user_device",
        cascade="all, delete-orphan"
    )

    def __repr__(self) -> str:
        return f"<UserDevice id={self.user_device_id} unique_id={self.device_unique_id}>"
