Jelajahi Sumber

Add SQL views for articles

jherve 1 tahun lalu
induk
melakukan
8b08da96ca
1 mengubah file dengan 39 tambahan dan 0 penghapusan
  1. 39 0
      src/de_quoi_parle_le_monde/storage.py

+ 39 - 0
src/de_quoi_parle_le_monde/storage.py

@@ -83,6 +83,45 @@ class Storage:
                 """
             )
 
+            await conn.execute(
+                """
+                CREATE VIEW IF NOT EXISTS main_articles_view AS
+                    SELECT
+                        si.id AS site_id,
+                        si.original_url AS original_url,
+                        s.id AS snapshot_id,
+                        s.timestamp_virtual,
+                        m.title,
+                        m.url
+                    FROM
+                        main_articles as m
+                    JOIN
+                        snapshots AS s ON s.id = m.snapshot_id
+                    JOIN
+                        sites AS si ON si.id = s.site_id
+                """
+            )
+
+            await conn.execute(
+                """
+                CREATE VIEW IF NOT EXISTS top_articles_view AS
+                    SELECT
+                        si.id AS site_id,
+                        si.original_url AS original_url,
+                        s.id AS snapshot_id,
+                        s.timestamp_virtual,
+                        t.title,
+                        t.url,
+                        t.rank
+                    FROM
+                        top_articles as t
+                    JOIN
+                        snapshots AS s ON s.id = t.snapshot_id
+                    JOIN
+                        sites AS si ON si.id = s.site_id
+                """
+            )
+
     async def add_site(self, original_url: str) -> int:
         async with aiosqlite.connect(self.conn_str) as conn:
             (id_,) = await conn.execute_insert(