* @copyright 2015 - 2020 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @version 5 * @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient */ namespace Aviat\AnimeClient\Command; use Aviat\Ion\Di\Exception\ContainerException; use Aviat\Ion\Di\Exception\NotFoundException; /** * Clears the API Cache */ final class CachePrime extends BaseCommand { /** * Clear, then prime the API cache * * @param array $args * @param array $options * @throws ContainerException * @throws NotFoundException * @return void */ public function execute(array $args, array $options = []): void { $this->setContainer($this->setupContainer()); $cache = $this->container->get('cache'); // Save the user id, if it exists, for priming the cache $userIdItem = $cache->getItem('kitsu-auth-token'); $userId = $userIdItem->isHit() ? $userIdItem->get() : null; $cache->clear(); $this->echoBox('Cache cleared, re-priming...'); if ($userId !== NULL) { $userIdItem = $cache->getItem('kitsu-auth-token'); $userIdItem->set($userId); $userIdItem->save(); } $kitsuModel = $this->container->get('kitsu-model'); // Prime anime list cache $kitsuModel->getFullOrganizedAnimeList(); // Prime manga list cache $kitsuModel->getFullOrganizedMangaList(); $this->echoBox('API Cache has been primed.'); } }