diff --git a/rss/bot.py b/rss/bot.py index 1a9de2b81a237d7fcd7ed7b4e7a623c9452c8b0e..0ac6b4649dc34cd6b26006b2c79de410f2dc1853 100644 --- a/rss/bot.py +++ b/rss/bot.py @@ -31,7 +31,7 @@ from mautrix.errors.request import MForbidden from maubot import Plugin, MessageEvent from maubot.handlers import command, event -from .db import Database, Feed, Entry, Subscription +from .db import Database, Feed, Entry, Thumbnail, Subscription class Config(BaseProxyConfig): diff --git a/rss/db.py b/rss/db.py index 892f477f6d57a74c8506965163e3d3d63ff35550..193149b922a8d59b80cb09cd2bf9ec01ed9e347f 100644 --- a/rss/db.py +++ b/rss/db.py @@ -30,8 +30,8 @@ Subscription = NamedTuple("Subscription", feed_id=int, room_id=RoomID, user_id=U notification_template=Template, send_notice=bool) Feed = NamedTuple("Feed", id=int, url=str, title=str, subtitle=str, link=str, subscriptions=List[Subscription]) -Entry = NamedTuple("Entry", feed_id=int, id=str, date=datetime, title=str, summary=str, content=str, link=str) - +Entry = NamedTuple("Entry", feed_id=int, id=str, date=datetime, title=str, summary=str, content=str, link=str, thumbnail_id=str) +Thumbnail = NamedTuple("Thumbnail", id=str, url=str, mime_type=str, size=int) class Database: db: Engine @@ -65,7 +65,13 @@ class Database: Column("title", Text, nullable=False), Column("summary", Text, nullable=False), Column("content", Text, nullable=False), - Column("link", Text, nullable=False)) + Column("link", Text, nullable=False), + Column("thumbnail_id", Integer, ForeignKey("thumbnail.id"), nullable=True)) + self.thumbnail = Table("thumbnail", metadata, + Column("id", String(255), primary_key=True), + Column("url", String(255), nullable=False), + Column("mime_type", String(255), nullable=False), + Column("size", Integer, nullable=False)) self.version = Table("version", metadata, Column("version", Integer, primary_key=True)) self.upgrade() @@ -109,6 +115,16 @@ class Database: if version == 1: self.db.execute("ALTER TABLE subscription ADD COLUMN send_notice BOOLEAN DEFAULT true") version = 2 + if version == 2: + self.db.execute("ALTER TABLE entry ADD COLUMN thumbnail_id VARCHAR(255)") + self.db.execute("""CREATE TABLE IF NOT EXISTS thumbnail ( + id VARCHAR(255) NOT NULL, + url VARCHAR(255) NOT NULL, + mime_type VARCHAR(255) NOT NULL, + size INTEGER NOT NULL, + PRIMARY KEY (id) + """) + version = 3 self.db.execute(self.version.delete()) self.db.execute(self.version.insert().values(version=version))