StatusService.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Services;
  3. use Illuminate\Support\Facades\Redis;
  4. use App\Status;
  5. //use App\Transformer\Api\v3\StatusTransformer;
  6. use App\Transformer\Api\StatusStatelessTransformer;
  7. use App\Transformer\Api\StatusTransformer;
  8. use League\Fractal;
  9. use League\Fractal\Serializer\ArraySerializer;
  10. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  11. class StatusService {
  12. const CACHE_KEY = 'pf:services:status:';
  13. public static function get($id)
  14. {
  15. return json_decode(Redis::get(self::CACHE_KEY . $id) ?? self::coldGet($id), true);
  16. }
  17. public static function coldGet($id)
  18. {
  19. $status = Status::whereScope('public')->findOrFail($id);
  20. $fractal = new Fractal\Manager();
  21. $fractal->setSerializer(new ArraySerializer());
  22. $resource = new Fractal\Resource\Item($status, new StatusStatelessTransformer());
  23. $res = $fractal->createData($resource)->toJson();
  24. self::set($id, $res);
  25. return $res;
  26. }
  27. public static function set($key, $val)
  28. {
  29. return Redis::set(self::CACHE_KEY . $key, $val);
  30. }
  31. public static function del($key)
  32. {
  33. return Redis::del(self::CACHE_KEY . $key);
  34. }
  35. public static function rem($key)
  36. {
  37. return self::del($key);
  38. }
  39. }