home · contact · privacy
Some further minor DB management code simplifications.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 3 Jan 2025 01:02:11 +0000 (02:02 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 3 Jan 2025 01:02:11 +0000 (02:02 +0100)
src/ytplom/db.py
src/ytplom/misc.py

index 993341c4a02cc07767f37ffa47c2a484bdc8c488..599b9f88e19688e185aeff68c72635f6f50589e8 100644 (file)
@@ -2,7 +2,7 @@
 from base64 import urlsafe_b64decode, urlsafe_b64encode
 from hashlib import file_digest
 from pathlib import Path
-from sqlite3 import connect as sql_connect, Cursor as DbCursor, Row
+from sqlite3 import connect as sql_connect, Cursor as SqlCursor, Row as SqlRow
 from typing import Any, Literal, NewType, Self
 from ytplom.primitives import (
         HandledException, NotFoundException, PATH_APP_DATA)
@@ -93,7 +93,7 @@ class DbConn:
         return False
 
     def exec(self, sql: SqlText, inputs: tuple[Any, ...] = tuple()
-             ) -> DbCursor:
+             ) -> SqlCursor:
         """Wrapper around sqlite3.Connection.execute, building '?' if inputs"""
         if len(inputs) > 0:
             q_marks = ('?' if len(inputs) == 1
@@ -101,9 +101,9 @@ class DbConn:
             return self._conn.execute(SqlText(f'{sql} {q_marks}'), inputs)
         return self._conn.execute(sql)
 
-    def exec_script(self, sql: SqlText) -> DbCursor:
+    def exec_script(self, sql: SqlText) -> None:
         """Wrapper around sqlite3.Connection.executescript."""
-        return self._conn.executescript(sql)
+        self._conn.executescript(sql)
 
     def commit(self) -> None:
         """Commit changes (i.e. DbData.save() calls) to database."""
@@ -129,7 +129,7 @@ class DbData:
         return str(getattr(self, self._str_field))
 
     @classmethod
-    def _from_table_row(cls, row: Row) -> Self:
+    def _from_table_row(cls, row: SqlRow) -> Self:
         kwargs = {}
         for i, col_name in enumerate(cls._cols):
             kwargs[col_name] = row[i]
@@ -156,7 +156,7 @@ class DbData:
         rows = conn.exec(sql).fetchall()
         return [cls._from_table_row(row) for row in rows]
 
-    def save(self, conn: DbConn) -> DbCursor:
+    def save(self, conn: DbConn) -> None:
         """Save entry to DB."""
         vals = []
         for val in [getattr(self, col_name) for col_name in self._cols]:
@@ -165,5 +165,5 @@ class DbData:
             elif isinstance(val, Hash):
                 val = val.bytes
             vals += [val]
-        return conn.exec(SqlText(f'REPLACE INTO {self._table_name} VALUES'),
-                         tuple(vals))
+        conn.exec(SqlText(f'REPLACE INTO {self._table_name} VALUES'),
+                  tuple(vals))
index 3a7022998c7f34055e74160b907083c3ea9960d7..5dc6cf5b1764d3f784feb60f570433725b893b6d 100644 (file)
@@ -18,7 +18,7 @@ import googleapiclient.discovery  # type: ignore
 from mpv import MPV  # type: ignore
 from yt_dlp import YoutubeDL  # type: ignore
 # ourselves
-from ytplom.db import DbConn, DbCursor, DbData, Hash, SqlText
+from ytplom.db import DbConn, DbData, Hash, SqlText
 from ytplom.primitives import HandledException, NotFoundException
 
 
@@ -355,7 +355,7 @@ class VideoFile(DbData):
     def _renew_last_update(self):
         self.last_update = DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT))
 
-    def save(self, conn: DbConn) -> DbCursor:
+    def save(self, conn: DbConn) -> None:
         """Extend super().save by new .last_update if sufficient changes."""
         if hash(self) != self._hash_on_last_update:
             self._renew_last_update()
@@ -528,7 +528,7 @@ class QuotaLog(DbData):
     @classmethod
     def _remove_old(cls, conn: DbConn) -> None:
         cutoff = datetime.now() - timedelta(days=1)
-        sql = SqlText(f'DELETE FROM {cls._table_name} WHERE timestamp < ?')
+        sql = SqlText(f'DELETE FROM {cls._table_name} WHERE timestamp <')
         conn.exec(SqlText(sql), (cutoff.strftime(TIMESTAMP_FMT),))