from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.dialects.mysql import INTEGER, BIGINT, VARCHAR
from sqlalchemy.orm import relationship
from app.db.base_class import Base


class UserDeviceLogin(Base):
    __tablename__ = "user_device_login"

    user_device_login_id = Column(INTEGER, primary_key=True, autoincrement=True)
    user_id = Column(INTEGER, ForeignKey("users.user_id"), nullable=True, index=True)
    user_device_id = Column(INTEGER, ForeignKey("user_devices.user_device_id"), nullable=False, index=True)

    login_ip = Column(VARCHAR(255), nullable=False)
    login_at = Column(BIGINT, nullable=False)
    logout_ip = Column(VARCHAR(255), nullable=True)
    logout_at = Column(BIGINT, nullable=True)
    created_at = Column(BIGINT, nullable=False)

    # Relationships
    user = relationship("User")
    device = relationship("UserDevice", back_populates="logins")

    def __repr__(self) -> str:
        return f"<UserDeviceLogin id={self.user_device_login_id} device_id={self.user_device_id}>"
