home · contact · privacy
Base core models on BaseModel providing sensible defaults.
[plomtask] / plomtask / days.py
index abfce06f51fc7ab43607ccd177dddc2194667391..553579e35ee694989433cab6cc0d01310847b180 100644 (file)
@@ -3,7 +3,7 @@ from __future__ import annotations
 from datetime import datetime, timedelta
 from sqlite3 import Row
 from plomtask.exceptions import BadFormatException, NotFoundException
 from datetime import datetime, timedelta
 from sqlite3 import Row
 from plomtask.exceptions import BadFormatException, NotFoundException
-from plomtask.db import DatabaseConnection
+from plomtask.db import DatabaseConnection, BaseModel
 
 DATE_FORMAT = '%Y-%m-%d'
 
 
 DATE_FORMAT = '%Y-%m-%d'
 
@@ -25,11 +25,13 @@ def todays_date() -> str:
     return datetime.now().strftime(DATE_FORMAT)
 
 
     return datetime.now().strftime(DATE_FORMAT)
 
 
-class Day:
+class Day(BaseModel):
     """Individual days defined by their dates."""
     """Individual days defined by their dates."""
+    table_name = 'days'
+    to_save = ['comment']
 
     def __init__(self, date: str, comment: str = '') -> None:
 
     def __init__(self, date: str, comment: str = '') -> None:
-        self.date = valid_date(date)
+        self.id_: str = valid_date(date)
         self.datetime = datetime.strptime(self.date, DATE_FORMAT)
         self.comment = comment
 
         self.datetime = datetime.strptime(self.date, DATE_FORMAT)
         self.comment = comment
 
@@ -88,6 +90,11 @@ class Day:
         assert isinstance(day, Day)
         return day
 
         assert isinstance(day, Day)
         return day
 
+    @property
+    def date(self) -> str:
+        """Return self.id_ under the assumption it's a date string."""
+        return self.id_
+
     @property
     def weekday(self) -> str:
         """Return what weekday matches self.date."""
     @property
     def weekday(self) -> str:
         """Return what weekday matches self.date."""
@@ -107,6 +114,4 @@ class Day:
 
     def save(self, db_conn: DatabaseConnection) -> None:
         """Add (or re-write) self to DB and cache."""
 
     def save(self, db_conn: DatabaseConnection) -> None:
         """Add (or re-write) self to DB and cache."""
-        db_conn.exec('REPLACE INTO days VALUES (?, ?)',
-                     (self.date, self.comment))
-        db_conn.cached_days[self.date] = self
+        self.save_core(db_conn, update_with_lastrowid=False)