Просмотр исходного кода

db/backfill_queue: init table

Signed-off-by: Sumner Evans <sumner@beeper.com>
Sumner Evans 2 лет назад
Родитель
Сommit
e1bc427959

+ 1 - 0
mautrix_instagram/db/upgrade/__init__.py

@@ -26,4 +26,5 @@ from . import (
     v06_hidden_events,
     v07_reaction_timestamps,
     v08_sync_sequence_id,
+    v09_backfill_queue,
 )

+ 2 - 2
mautrix_instagram/db/upgrade/v00_latest_revision.py

@@ -110,7 +110,7 @@ async def upgrade_latest(conn: Connection, scheme: Scheme) -> None:
             queue_id            INTEGER PRIMARY KEY {gen},
             user_mxid           TEXT,
             priority            INTEGER NOT NULL,
-            portal_thread_id    BIGINT,
+            portal_thread_id    TEXT,
             portal_receiver     BIGINT,
             num_pages           INTEGER NOT NULL,
             page_delay          INTEGER NOT NULL,
@@ -122,7 +122,7 @@ async def upgrade_latest(conn: Connection, scheme: Scheme) -> None:
 
             FOREIGN KEY (user_mxid) REFERENCES "user"(mxid) ON DELETE CASCADE ON UPDATE CASCADE,
             FOREIGN KEY (portal_thread_id, portal_receiver)
-                REFERENCES portal(thread_id, received) ON DELETE CASCADE
+                REFERENCES portal(thread_id, receiver) ON DELETE CASCADE
         )
         """
     )

+ 47 - 0
mautrix_instagram/db/upgrade/v09_backfill_queue.py

@@ -0,0 +1,47 @@
+# mautrix-instagram - A Matrix-Instagram puppeting bridge.
+# Copyright (C) 2022 Tulir Asokan, Sumner Evans
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+from mautrix.util.async_db import Connection, Scheme
+
+from . import upgrade_table
+
+
+@upgrade_table.register(description="Add the backfill queue table")
+async def upgrade_v9(conn: Connection, scheme: Scheme) -> None:
+    gen = ""
+    if scheme in (Scheme.POSTGRES, Scheme.COCKROACH):
+        gen = "GENERATED ALWAYS AS IDENTITY"
+    await conn.execute(
+        f"""
+        CREATE TABLE backfill_queue (
+            queue_id            INTEGER PRIMARY KEY {gen},
+            user_mxid           TEXT,
+            priority            INTEGER NOT NULL,
+            portal_thread_id    TEXT,
+            portal_receiver     BIGINT,
+            num_pages           INTEGER NOT NULL,
+            page_delay          INTEGER NOT NULL,
+            post_batch_delay    INTEGER NOT NULL,
+            max_total_pages     INTEGER NOT NULL,
+            dispatch_time       TIMESTAMP,
+            completed_at        TIMESTAMP,
+            cooldown_timeout    TIMESTAMP,
+
+            FOREIGN KEY (user_mxid) REFERENCES "user"(mxid) ON DELETE CASCADE ON UPDATE CASCADE,
+            FOREIGN KEY (portal_thread_id, portal_receiver)
+                REFERENCES portal(thread_id, receiver) ON DELETE CASCADE
+        )
+        """
+    )