X-Git-Url: https://apps.delaporte.us/gitweb/matrix-fridge-bot.git/blobdiff_plain/e67917d7b50cb915c0189ea8728855fdd5e9a414..HEAD:/matrix_fridge_bot/db.py diff --git a/matrix_fridge_bot/db.py b/matrix_fridge_bot/db.py index ceb0872..4f31e5a 100644 --- a/matrix_fridge_bot/db.py +++ b/matrix_fridge_bot/db.py @@ -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)