X-Git-Url: https://us-delaporte.pagekite.me/gitweb/matrix-fridge-bot.git/blobdiff_plain/dd82eeb660d6db12c47af269b16badc9be8b1f2b..refs/heads/main:/matrix_fridge_bot/db.py?ds=sidebyside diff --git a/matrix_fridge_bot/db.py b/matrix_fridge_bot/db.py index f938a48..4f31e5a 100644 --- a/matrix_fridge_bot/db.py +++ b/matrix_fridge_bot/db.py @@ -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)