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)
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):
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:
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 = []
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)