from typing import Union from src.modules import bgg_connection, db_connection 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_boardgames(boardgame_classes.BoardGame, boardgame_id=boardgame_id) to_return_boardgame = None if len(boardgame_in_db) != 0: to_return_boardgame = boardgame_in_db[0] else: to_return_boardgame = bgg_connection.get_boardgame(boardgame_id) db_connection.add_boardgame(to_return_boardgame) return to_return_boardgame def get_user_owned_collection() -> list[Union[boardgame_classes.OwnedBoardGame, boardgame_classes.OwnedBoardGameExpansion]]: owned_boardgames_from_db: list[boardgame_classes.OwnedBoardGame] = db_connection.get_boardgames(boardgame_classes.OwnedBoardGame) owned_boardgame_expanions_from_db: list[boardgame_classes.OwnedBoardGameExpansion] = db_connection.get_boardgames(boardgame_classes.OwnedBoardGameExpansion) to_return_boardgames = [] if len(owned_boardgames_from_db) == 0 and len(owned_boardgame_expanions_from_db) == 0: owned_boardgames = bgg_connection.get_user_owned_collection() for boardgame in owned_boardgames: db_connection.add_boardgame(boardgame) to_return_boardgames = owned_boardgames else: to_return_boardgames = owned_boardgames_from_db + owned_boardgame_expanions_from_db return to_return_boardgames def get_user_wishlist_collection(wishlist_priority: int = 0) -> Union[list[boardgame_classes.WishlistBoardGame], list[boardgame_classes.WishlistBoardGameExpansion]]: wishlisted_boardgames_from_db = db_connection.get_boardgames(boardgame_classes.WishlistBoardGame) wishlisted_boardgame_expansions_from_db = db_connection.get_boardgames(boardgame_classes.WishlistBoardGameExpansion) to_return_boardgames = [] if len(wishlisted_boardgames_from_db) == 0 and len(wishlisted_boardgame_expansions_from_db) == 0: wishlisted_boardgames = bgg_connection.get_user_wishlist_collection() for boardgame in wishlisted_boardgames: db_connection.add_boardgame(boardgame) to_return_boardgames = wishlisted_boardgames else: to_return_boardgames = wishlisted_boardgames_from_db + wishlisted_boardgame_expansions_from_db if wishlist_priority != 0: to_return_boardgames = filter(lambda game: game.wishlist_priority == wishlist_priority, to_return_boardgames) return to_return_boardgames def get_plays() -> list[play_classes.Play]: return bgg_connection.get_plays() def delete_database(): db_connection.delete_database() def create_db_and_tables(): db_connection.create_db_and_tables()