import uuid

from src.core.database import Base
from sqlalchemy.orm import relationship
from sqlalchemy import (
    Column,
    String,
    DateTime,
    Time,
    Text,
    Integer,
    Boolean,
    ForeignKey,
    Index
)


class Activity(Base):
    __tablename__ = "atividades"

    id = Column(
        String(36),
        primary_key=True,
        default=lambda: str(uuid.uuid4()),
    )

    computador_id = Column(
        String(36),
        ForeignKey("computadores.id"),
        nullable=False,
        index=True,
    )
    computador = relationship(
        "Computer",
        back_populates="atividades",
        lazy="noload")

    nome_usuario = Column(String(150), nullable=True, name="nomeUsuario")
    data_hora = Column(
        DateTime(
            timezone=False),
        nullable=True,
        name="dataHora")
    evento = Column(String(150), nullable=True)
    processo = Column(String(150), nullable=True)
    eh_navegador = Column(Boolean, nullable=True, name="ehNavegador")
    nome_janela = Column(String(150), nullable=True, name="nomeJanela")
    descricao = Column(Text, nullable=True)
    duracao = Column(Time, nullable=True)
    pid = Column(Integer, nullable=True)
    cliques = Column(Integer, nullable=True)
    teclas = Column(Integer, nullable=True)

    __table_args__ = (
        Index("idx_atividades_computador_data", "computador_id", "dataHora"),
        Index("idx_atividades_data_hora", "dataHora"),
        Index("idx_atividades_evento", "evento"),
        Index("idx_atividades_processo", "processo"),
    )
