from sqlalchemy import Column, String, Text, DateTime, Boolean, Integer from sqlalchemy.sql import func from app.database import Base class ReportCache(Base): __tablename__ = "report_cache" id = Column(String(36), primary_key=True) cache_key = Column(String(255), unique=True, index=True, nullable=False) report_type = Column(String(50), nullable=False) # persona | empresa | vehiculo identifier = Column(String(100), nullable=False, index=True) # cuit / dominio data = Column(Text, nullable=False) # JSON string sources_used = Column(String(500)) # comma-separated sources created_at = Column(DateTime(timezone=True), server_default=func.now()) expires_at = Column(DateTime(timezone=True)) hit_count = Column(Integer, default=0) class SearchHistory(Base): __tablename__ = "search_history" id = Column(Integer, primary_key=True, index=True) user_id = Column(String(36), index=True, nullable=False) identifier = Column(String(100), nullable=False) # CUIT / Dominio type = Column(String(50)) # persona | empresa | vehiculo name = Column(String(255)) # Razon social / Nombre created_at = Column(DateTime(timezone=True), server_default=func.now()) report_id = Column(String(36)) # Link to cache class MonitorTask(Base): __tablename__ = "monitor_tasks" id = Column(Integer, primary_key=True, index=True) user_id = Column(String(36), index=True, nullable=False) identifier = Column(String(100), nullable=False) # CUIT / Dominio type = Column(String(50)) # persona | empresa | vehiculo last_check = Column(DateTime(timezone=True), server_default=func.now()) active = Column(Boolean, default=True) alert_count = Column(Integer, default=0) created_at = Column(DateTime(timezone=True), server_default=func.now())