]> us-delaporte.pagekite.me Git - matrix-fridge-bot.git/blobdiff - matrix_fridge_bot/db.py
Fix - allow adding items again after they are long expired
[matrix-fridge-bot.git] / matrix_fridge_bot / db.py
index ceb08727b45b7fc8c121ad99c0f0b6502cf84f53..4f31e5af5e47d92df5079e41ce64344fa5fd96f6 100644 (file)
@@ -3,23 +3,26 @@ import os
 from datetime import datetime as dt
 from datetime import timedelta
 
-from sqlmodel import Field, Session, SQLModel, create_engine, select, text
+from sqlmodel import Field, Session, SQLModel, create_engine, select, text, delete
 
 ## Todo List
-# - [ ] add to fridge
+# - [x] add to fridge
 # - [ ] reminder to eat recent food
 # - [ ] reminder to toss old food
 
 DATE_FORMAT = '%A, %Y-%m-%d'
 MODULE='fridge'
 STALE_DAYS = 4
-TOSS_DAYS = 5
+FORGET_DAYS = 10
 
 def today():
     return dt.now().strftime(DATE_FORMAT)
 
 logger = logging.getLogger(__name__)
 logging.basicConfig(filename=f'matrix-{MODULE}-bot.log', encoding='utf-8', level=logging.DEBUG)
+logging.getLogger('nio').setLevel(logging.WARNING)
+logging.getLogger('asyncio').setLevel(logging.WARNING)
+logging.getLogger('invoke').setLevel(logging.WARNING)
 
 class Food(SQLModel, table=True):
     id: int | None = Field(default=None, primary_key=True)
@@ -34,6 +37,7 @@ class Data():
     def __init__(self, db_file):
 
         self.file = db_file
+        logger.debug(f'DB file: {db_file}')
         self.engine = self.get_engine()
 
     def get_db_file(self):
@@ -51,6 +55,12 @@ class Data():
         logger.debug(f'Stale date is {stale}')
         return stale
 
+    @staticmethod
+    def get_forget():
+        forget = dt.now() - timedelta(FORGET_DAYS)
+        return forget 
+
+
     def list(self):
         results = []
         with Session(self.engine) as session:
@@ -74,6 +84,16 @@ class Data():
 
         return results
 
+    def cleanup(self):
+        
+        logger.debug(f'Cleaning up...')
+        with Session(self.engine) as session:
+            stale_dt = Data.get_forget()
+            cmd = delete(Food).where(Food.added_date < stale_dt)
+            result = session.exec(cmd)
+            session.commit()
+        return True
+
 
     def filter(self, term):
         results = []
@@ -84,6 +104,8 @@ class Data():
         return results
         
     def add(self, name):
+        logger.debug(f'Attempting to add {name}')
+        self.cleanup()  # Old items can block new ones
         try:
             with Session(self.engine) as session:
                 new = Food(name=name)