Update ProfileService, use account transformer

This commit is contained in:
Daniel Supernault 2021-05-01 13:35:47 -06:00
parent 9cf962fff5
commit 391b1287ac
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 23 additions and 35 deletions

View file

@ -57,7 +57,7 @@ class MediaTagService
protected function idToUsername($id) protected function idToUsername($id)
{ {
$profile = ProfileService::build()->profileId($id); $profile = ProfileService::get($id);
if(!$profile) { if(!$profile) {
return 'unavailable'; return 'unavailable';
@ -65,8 +65,8 @@ class MediaTagService
return [ return [
'id' => (string) $id, 'id' => (string) $id,
'username' => $profile->username, 'username' => $profile['username'],
'avatar' => $profile->avatarUrl() 'avatar' => $profile['avatar']
]; ];
} }

View file

@ -4,41 +4,29 @@ namespace App\Services;
use Cache; use Cache;
use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Redis;
use App\Transformer\Api\AccountTransformer;
use App\{ use League\Fractal;
Follower, use League\Fractal\Serializer\ArraySerializer;
Profile use League\Fractal\Pagination\IlluminatePaginatorAdapter;
}; use App\Profile;
class ProfileService { class ProfileService {
protected $profile; public static function get($id)
protected $profile_prefix;
public static function build()
{ {
return new self(); $key = 'profile:model:' . $id;
} $ttl = now()->addHours(4);
$res = Cache::remember($key, $ttl, function() use($id) {
public function profile(Profile $profile) $profile = Profile::find($id);
{ if(!$profile) {
$this->profile = $profile; return false;
$this->profile_prefix = 'profile:model:'.$profile->id; }
return $this; $fractal = new Fractal\Manager();
} $fractal->setSerializer(new ArraySerializer());
$resource = new Fractal\Resource\Item($profile, new AccountTransformer());
public function profileId($id) return $fractal->createData($resource)->toArray();
{
return Cache::rememberForever('profile:model:'.$id, function() use($id) {
return Profile::findOrFail($id);
});
}
public function get()
{
return Cache::rememberForever($this->profile_prefix, function() {
return $this->profile;
}); });
return $res;
} }
} }