Răsfoiți Sursa

Add StatusService

Daniel Supernault 6 ani în urmă
părinte
comite
425ec918ae
1 a modificat fișierele cu 46 adăugiri și 0 ștergeri
  1. 46 0
      app/Services/StatusService.php

+ 46 - 0
app/Services/StatusService.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Services;
+
+use Redis;
+use App\Status;
+use App\Transformer\Api\StatusStatelessTransformer;
+use League\Fractal;
+use League\Fractal\Serializer\ArraySerializer;
+use League\Fractal\Pagination\IlluminatePaginatorAdapter;
+
+class StatusService {
+
+	const CACHE_KEY = 'pf:services:status:';
+
+	public static function get($id)
+	{
+		return Redis::get(self::CACHE_KEY . $id) ?? self::coldGet($id);
+	}
+
+	public static function coldGet($id)
+	{
+		$status = Status::findOrFail($id);
+		$fractal = new Fractal\Manager();
+		$fractal->setSerializer(new ArraySerializer());
+		$resource = new Fractal\Resource\Item($status, new StatusStatelessTransformer());
+		$res = $fractal->createData($resource)->toJson();
+		self::set($id, $res);
+		return $res;
+	}
+
+	public static function set($key, $val)
+	{
+		return Redis::set(self::CACHE_KEY . $key, $val);
+	}
+
+	public static function del($key)
+	{
+		return Redis::del(self::CACHE_KEY . $key);
+	}
+
+	public static function rem($key)
+	{
+		return self::del($key);
+	}
+}