+ @classmethod
+ def by_date(cls, db_conn: DatabaseConnection,
+ date: str, create: bool = False) -> Day:
+ """Retrieve Day by date if in DB (prefer cache), else return None."""
+ if date in db_conn.cached_days.keys():
+ day = db_conn.cached_days[date]
+ assert isinstance(day, Day)
+ return day
+ for row in db_conn.exec('SELECT * FROM days WHERE date = ?', (date,)):
+ return cls.from_table_row(db_conn, row)
+ if not create:
+ raise NotFoundException(f'Day not found for date: {date}')
+ day = cls(date)
+ db_conn.cached_days[date] = day
+ assert isinstance(day, Day)
+ return day
+