CachedQueriesResource.php 832 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace Benchmark\Resources;
  3. use Cache\Adapter\Common\CacheItem;
  4. use Hamlet\Database\Database;
  5. use Hamlet\Http\Requests\Request;
  6. use Hamlet\Http\Responses\Response;
  7. use Psr\Cache\CacheItemPoolInterface;
  8. class CachedQueriesResource extends QueriesResource
  9. {
  10. public function __construct(private CacheItemPoolInterface $cache, Database $database)
  11. {
  12. parent::__construct($database);
  13. }
  14. public function getResponse(Request $request): Response
  15. {
  16. $count = $this->getQueriesCount($request);
  17. $key = 'count.' . $count;
  18. $item = $this->cache->getItem($key);
  19. if ($item->isHit()) {
  20. return $item->get();
  21. }
  22. $response = parent::getResponse($request);
  23. $this->cache->save(new CacheItem($key, true, $response));
  24. return $response;
  25. }
  26. }