diff --git a/db/database.db b/db/database.db index 9b0b041..79387f2 100644 Binary files a/db/database.db and b/db/database.db differ diff --git a/src/modules/data_connection.py b/src/modules/data_connection.py index 3a4ae7b..45a1b26 100644 --- a/src/modules/data_connection.py +++ b/src/modules/data_connection.py @@ -4,9 +4,18 @@ from src.classes import boardgame_classes, play_classes def get_boardgame(boardgame_id: int) -> boardgame_classes.BoardGame: #Will check if it already exists in db, then it will get it from there + + boardgame_in_db: list[boardgame_classes.BoardGame] = db_connection.get_base_boardgames(boardgame_id=boardgame_id) - return bgg_connection.get_boardgame(boardgame_id) + to_return_boardgame = None + if len(boardgame_in_db) == 0: + to_return_boardgame = bgg_connection.get_boardgame(boardgame_id) + db_connection.add_boardgame(to_return_boardgame) + else: + to_return_boardgame = boardgame_in_db[0] + + return to_return_boardgame def get_user_owned_collection() -> list[boardgame_classes.BoardGame]: diff --git a/src/modules/db_connection.py b/src/modules/db_connection.py index 71d5019..2fca9bf 100644 --- a/src/modules/db_connection.py +++ b/src/modules/db_connection.py @@ -16,21 +16,32 @@ def add_boardgame(boardgame: Union[ boardgame_classes.OwnedBoardGame, boardgame_classes.OwnedBoardGameExpansion, boardgame_classes.WishlistBoardGame, boardgame_classes.WishlistBoardGameExpansion]): - session = Session(engine) + with Session(engine) as session: + session.add(boardgame) - session.add(boardgame) + session.commit() + session.refresh(boardgame) - session.commit() +def get_base_boardgames(boardgame_id = None) -> list[boardgame_classes.BoardGame]: + with Session(engine) as session: + session.expire_on_commit = False + if boardgame_id == None: + statement = select(boardgame_classes.BoardGame) + else: + statement = select(boardgame_classes.BoardGame).where(boardgame_classes.BoardGame.id == boardgame_id) + results = session.exec(statement) + + boardgame_list = results.all() -def get_all_owned_boardgames(): + return boardgame_list + + +def get_all_owned_boardgames() -> list[boardgame_classes.OwnedBoardGame]: with Session(engine) as session: statement = select(boardgame_classes.OwnedBoardGame) results = session.exec(statement) - boardgame_list = [] - - for boardgame in results: - boardgame_list.append(boardgame) + boardgame_list = results.all() return boardgame_list