]> apps.delaporte.us Git - matrix-fridge-bot.git/blobdiff - matrix_fridge_bot/db.py
Fixup
[matrix-fridge-bot.git] / matrix_fridge_bot / db.py
index f938a483896c5ceae23a58715834838a1a3446a4..4f31e5af5e47d92df5079e41ce64344fa5fd96f6 100644 (file)
@@ -1,24 +1,28 @@
 import logging
 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 = 2
-TOSS_DAYS = 4
+STALE_DAYS = 4
+FORGET_DAYS = 10
 
 def today():
     return dt.now().strftime(DATE_FORMAT)
 
 logger = logging.getLogger(__name__)
-logging.basicConfig(filename=f'{MODULE}.log', encoding='utf-8', level=logging.DEBUG)
+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)
@@ -33,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):
@@ -46,14 +51,23 @@ class Data():
 
     @staticmethod
     def get_stale():
-        return dt.now() - dt.timedelta(STALE_DAYS)
+        stale = dt.now() - timedelta(STALE_DAYS)
+        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:
             stale_dt = Data.get_stale()
-            cmd = select(Food).where(Food.added_date < stale_dt)
+            cmd = select(Food).where(Food.added_date > stale_dt)
             results = session.exec(cmd).all()
+            logger.debug(f'List restuls are {str(results)}')
             if(not results):
                 results.append('Nothing Found')
 
@@ -63,13 +77,23 @@ class Data():
         results = []
         with Session(self.engine) as session:
             stale_dt = Data.get_stale()
-            cmd = select(Food).where(Food.added_date >= stale_dt)
+            cmd = select(Food).where(Food.added_date <= stale_dt)
             results = session.exec(cmd).all()
             if(not results):
                 results.append('Nothing Found')
 
         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 = []
@@ -80,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)