#pragma once #include #include #include "CacheManager.h" class PokemonCard; class PokemonTCGAPIClient; class DownloadManager; /** @brief user pokedex class, handles caching and api access silently */ class Pokedex { private: std::vector cards; /** @brief download card collection using API client */ virtual void load_collection_remote(); /** @brief load cards from cache */ virtual void load_collection_local(); /** @brief verify all cards in collection */ virtual void verify_collection(); /** @brief cache connection */ CacheManager* cache = nullptr; PokemonTCGAPIClient* api = nullptr; DownloadManager* download_manager = nullptr; friend class PokemonCard; virtual std::vector search_cards_by_id_local(std::string query); virtual std::vector search_cards_by_id_remote(std::string query); /** @brief convert std::string to lowercase */ std::string lower(std::string input); public: Pokedex(); virtual ~Pokedex(); /** @brief search cards that contain `query` in id field */ virtual std::vector search_cards_by_id(std::string query); };