"""Modelos de datos compartidos por toda la app."""

from dataclasses import dataclass
from datetime import datetime


@dataclass
class Account:
    """Una cuenta de X que vigilamos."""
    handle: str                 # sin la @ (ej. "karpathy")
    display_name: str = ""      # nombre legible (ej. "Andrej Karpathy")
    note: str = ""              # por qué la sigues / categoría
    enabled: bool = True        # si está activa en la captura


@dataclass
class Tweet:
    """Un tweet ya normalizado, venga de donde venga (mock, twikit, API...)."""
    id: str
    author: str                 # handle sin @
    text: str
    created_at: datetime        # con zona horaria (UTC)
    likes: int = 0
    retweets: int = 0
    replies: int = 0
    quotes: int = 0
    views: int = 0
    url: str = ""

    @property
    def engagement(self) -> int:
        return self.likes + self.retweets + self.replies + self.quotes
