From 0427dbe6bd72030a6ef720bd3c97b71af460801e Mon Sep 17 00:00:00 2001 From: Brad Brown Date: Fri, 24 Jun 2022 14:45:28 -0500 Subject: [PATCH] source dates from DB --- wordlinator/db/pg.py | 11 +++++------ wordlinator/utils/__init__.py | 16 +++++++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/wordlinator/db/pg.py b/wordlinator/db/pg.py index 4349663..4b44543 100644 --- a/wordlinator/db/pg.py +++ b/wordlinator/db/pg.py @@ -4,8 +4,6 @@ import typing import peewee -import wordlinator.utils - db = peewee.PostgresqlDatabase( os.getenv("DB_NAME", "wordlegolf"), user=os.getenv("DB_USER", "wordlegolf"), @@ -117,10 +115,11 @@ class WordleDb: try: return Game.get(Game.game == round_no) except peewee.DoesNotExist: - start_date = ( - start_date - or wordlinator.utils.WORDLE_GOLF_ROUND_DATES[round_no - 1] - ) + if not start_date: + raise ValueError( + f"Round {round_no} does not exist, " + "and no start_date provide to create it" + ) return Game.create(game=round_no, start_date=start_date) def get_or_create_hole(self, round_no, hole_no): diff --git a/wordlinator/utils/__init__.py b/wordlinator/utils/__init__.py index b82286f..126e26c 100644 --- a/wordlinator/utils/__init__.py +++ b/wordlinator/utils/__init__.py @@ -3,13 +3,11 @@ import dataclasses import datetime import typing +import wordlinator.db.pg + WORDLE_DAY_ZERO = datetime.date(2021, 6, 19) -WORDLE_GOLF_ROUND_DATES = [ - datetime.date(2022, 5, 9), - datetime.date(2022, 5, 31), - datetime.date(2022, 6, 24), -] +WORDLE_GOLF_ROUNDS = wordlinator.db.pg.WordleDb().get_rounds() def date_from_string(datestr: str): @@ -27,10 +25,10 @@ class GolfHole: @classmethod def from_date(cls, date: datetime.date): - for game_no, start_date in enumerate(WORDLE_GOLF_ROUND_DATES, start=1): - hole_value = (date - start_date).days + 1 - if 1 <= hole_value <= 18: - return cls(game_no=game_no, hole_no=hole_value) + for round in WORDLE_GOLF_ROUNDS: + if round.start_date <= date <= round.end_date: + hole_no = (date - round.start_date).days + 1 + return cls(game_no=round.game, hole_no=hole_no) return None