#pragma once #include #include #include "CacheManager.h" #include "PokemonCard.h" #include "PokemonTCGAPIClient.h" /** @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; public: Pokedex(); virtual ~Pokedex(); /** @brief search cards that contain `query` in id field */ virtual std::vector search_cards_by_id(std::string query); };