from sqlalchemy import Column, String, Boolean, Text, DateTime, Integer from datetime import datetime from db import Base class User(Base): __tablename__ = "users" id = Column(String, primary_key=True) email = Column(String, unique=True) name = Column(String) twofa_enabled = Column(Boolean, default=False) twofa_method = Column(String, default="totp") twofa_secret = Column(String) twofa_sensitive_actions = Column(Boolean, default=False) class Preferences(Base): __tablename__ = "preferences" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(String) preferred_mode = Column(String, default="conversar") auto_search = Column(Boolean, default=True) auto_monitoring = Column(Boolean, default=False) preferred_export = Column(String, default="pdfa") likes_suggestions = Column(Boolean, default=True) likes_quick_actions = Column(Boolean, default=True) class Conversation(Base): __tablename__ = "conversations" id = Column(String, primary_key=True) user_id = Column(String) created_at = Column(DateTime, default=datetime.utcnow) mode = Column(String) context_summary = Column(Text) class Message(Base): __tablename__ = "messages" id = Column(String, primary_key=True) conversation_id = Column(String) role = Column(String) content = Column(Text) metadata = Column(Text) created_at = Column(DateTime, default=datetime.utcnow) class MonitoringTopic(Base): __tablename__ = "monitoring_topics" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(String) label = Column(String) sources = Column(Text) created_at = Column(DateTime, default=datetime.utcnow) active = Column(Boolean, default=True) class Alert(Base): __tablename__ = "alerts" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(String) monitoring_topic_id = Column(Integer) title = Column(String) description = Column(Text) source = Column(String) created_at = Column(DateTime, default=datetime.utcnow) class AuditTrail(Base): __tablename__ = "audit_trail" id = Column(Integer, primary_key=True, autoincrement=True) user_email = Column(String) action = Column(String) details = Column(Text) timestamp = Column(DateTime, default=datetime.utcnow)