فهرست منبع

Normalize snapshots table

jherve 1 سال پیش
والد
کامیت
322e5ffd4c
2فایلهای تغییر یافته به همراه12 افزوده شده و 10 حذف شده
  1. 3 1
      src/de_quoi_parle_le_monde/main.py
  2. 9 9
      src/de_quoi_parle_le_monde/storage.py

+ 3 - 1
src/de_quoi_parle_le_monde/main.py

@@ -32,7 +32,9 @@ class ArchiveDownloader:
                     print(f"error while processing {id_closest}")
                     print(f"error while processing {id_closest}")
                     raise e
                     raise e
                 site_id = await storage.add_site(collection.url)
                 site_id = await storage.add_site(collection.url)
-                snapshot_id = await storage.add_snapshot(main_page.snapshot.id, dt)
+                snapshot_id = await storage.add_snapshot(
+                    site_id, main_page.snapshot.id, dt
+                )
                 await storage.add_main_article(snapshot_id, main_page.main_article)
                 await storage.add_main_article(snapshot_id, main_page.main_article)
                 for t in main_page.top_articles:
                 for t in main_page.top_articles:
                     await storage.add_top_article(snapshot_id, t)
                     await storage.add_top_article(snapshot_id, t)

+ 9 - 9
src/de_quoi_parle_le_monde/storage.py

@@ -36,16 +36,16 @@ class Storage:
                 """
                 """
                 CREATE TABLE IF NOT EXISTS snapshots (
                 CREATE TABLE IF NOT EXISTS snapshots (
                     id INTEGER PRIMARY KEY AUTOINCREMENT,
                     id INTEGER PRIMARY KEY AUTOINCREMENT,
+                    site_id INTEGER REFERENCES sites (id) ON DELETE CASCADE,
                     timestamp TEXT,
                     timestamp TEXT,
-                    timestamp_virtual TEXT,
-                    site TEXT
+                    timestamp_virtual TEXT
                 );
                 );
                 """
                 """
             )
             )
             await conn.execute(
             await conn.execute(
                 """
                 """
-                CREATE UNIQUE INDEX IF NOT EXISTS snapshots_unique_timestamp_virtual_site
-                ON snapshots (timestamp_virtual, site);
+                CREATE UNIQUE INDEX IF NOT EXISTS snapshots_unique_timestamp_virtual_site_id
+                ON snapshots (timestamp_virtual, site_id);
                 """
                 """
             )
             )
 
 
@@ -108,16 +108,16 @@ class Storage:
             return id_
             return id_
 
 
     async def add_snapshot(
     async def add_snapshot(
-        self, snapshot: InternetArchiveSnapshotId, virtual: datetime
+        self, site_id: int, snapshot: InternetArchiveSnapshotId, virtual: datetime
     ) -> int:
     ) -> int:
         async with aiosqlite.connect(self.conn_str) as conn:
         async with aiosqlite.connect(self.conn_str) as conn:
             (id_,) = await conn.execute_insert(
             (id_,) = await conn.execute_insert(
                 """
                 """
-                INSERT INTO snapshots (timestamp, site, timestamp_virtual)
+                INSERT INTO snapshots (timestamp, site_id, timestamp_virtual)
                 VALUES (?, ?, ?)
                 VALUES (?, ?, ?)
                 ON CONFLICT DO NOTHING;
                 ON CONFLICT DO NOTHING;
                 """,
                 """,
-                [snapshot.timestamp, snapshot.original, virtual],
+                [snapshot.timestamp, site_id, virtual],
             )
             )
 
 
             if id_ == 0:
             if id_ == 0:
@@ -125,9 +125,9 @@ class Storage:
                     """
                     """
                     SELECT id
                     SELECT id
                     FROM snapshots
                     FROM snapshots
-                    WHERE timestamp_virtual = ? AND site = ?
+                    WHERE timestamp_virtual = ? AND site_id = ?
                     """,
                     """,
-                    [virtual, snapshot.original],
+                    [virtual, site_id],
                 )
                 )
 
 
             await conn.commit()
             await conn.commit()