| from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Text, func |
|
|
| from app.db.engine import Base |
|
|
|
|
| class TrendSubscription(Base): |
| __tablename__ = "trend_subscriptions" |
|
|
| id = Column(Integer, primary_key=True, autoincrement=True) |
| name = Column(String, nullable=False) |
| keywords = Column(Text, nullable=False, default="[]") |
| platforms = Column(Text, nullable=False, default='["all"]') |
| match_mode = Column(String, nullable=False, default="any") |
| enabled = Column(Boolean, nullable=False, default=True) |
| push_enabled = Column(Boolean, nullable=False, default=False) |
| push_channel_ids = Column(Text, nullable=False, default="[]") |
| last_matched_at = Column(DateTime, nullable=True) |
| created_at = Column(DateTime, server_default=func.now()) |
| updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) |
|
|
|
|
| class TrendSubscriptionMatch(Base): |
| __tablename__ = "trend_subscription_matches" |
|
|
| id = Column(Integer, primary_key=True, autoincrement=True) |
| subscription_id = Column(Integer, ForeignKey("trend_subscriptions.id"), nullable=False) |
| platform = Column(String, nullable=False) |
| item_id = Column(String, nullable=False) |
| title = Column(String, nullable=False) |
| url = Column(Text, nullable=False, default="") |
| hot_score = Column(String, nullable=False, default="") |
| matched_keywords = Column(Text, nullable=False, default="[]") |
| matched_at = Column(DateTime, server_default=func.now()) |
| is_read = Column(Boolean, nullable=False, default=False) |
| |
| __table_args__ = ( |
| {"sqlite_autoincrement": True}, |
| ) |
|
|
|
|
| class NotificationChannel(Base): |
| __tablename__ = "notification_channels" |
|
|
| id = Column(Integer, primary_key=True, autoincrement=True) |
| name = Column(String, nullable=False) |
| type = Column(String, nullable=False) |
| config = Column(Text, nullable=False, default="{}") |
| enabled = Column(Boolean, nullable=False, default=True) |
| created_at = Column(DateTime, server_default=func.now()) |
| updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) |
|
|