diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..3d20425 --- /dev/null +++ b/app/models.py @@ -0,0 +1,68 @@ +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)