From 1f300f5a650a4b6638e64c2e9e2748cc44f17672 Mon Sep 17 00:00:00 2001
From: Falk Rehse <falk.rehse@tu-dortmund.de>
Date: Sat, 23 Apr 2022 18:08:42 +0200
Subject: [PATCH] Update DB to allow for thumbnails

---
 rss/bot.py |  2 +-
 rss/db.py  | 22 +++++++++++++++++++---
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/rss/bot.py b/rss/bot.py
index 1a9de2b..0ac6b46 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 892f477..193149b 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))
 
-- 
GitLab