mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-22 14:31:26 +00:00
Add FollowerService
This commit is contained in:
parent
896012bcaa
commit
e45a3c4b93
1 changed files with 58 additions and 0 deletions
58
app/Services/FollowerService.php
Normal file
58
app/Services/FollowerService.php
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use Redis;
|
||||
|
||||
use App\{
|
||||
Follower,
|
||||
Profile
|
||||
};
|
||||
|
||||
class FollowerService {
|
||||
|
||||
protected $profile;
|
||||
protected $follower_prefix;
|
||||
protected $following_prefix;
|
||||
|
||||
public static function build()
|
||||
{
|
||||
return new self();
|
||||
}
|
||||
|
||||
public function profile(Profile $profile)
|
||||
{
|
||||
$this->profile = $profile;
|
||||
$this->follower_prefix = config('cache.prefix').':profile:followers:'.$profile->id;
|
||||
$this->following_prefix = config('cache.prefix').':profile:following:'.$profile->id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function followers($limit = 100, $offset = 0)
|
||||
{
|
||||
if(Redis::llen($this->follower_prefix) == 0) {
|
||||
$followers = $this->profile->followers;
|
||||
$followers->map(function($i) {
|
||||
Redis::lpush($this->follower_prefix, $i->id);
|
||||
});
|
||||
return $followers;
|
||||
} else {
|
||||
return Redis::lrange($this->follower_prefix, $offset, $limit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function following($limit = 100, $offset = 0)
|
||||
{
|
||||
if(Redis::llen($this->following_prefix) == 0) {
|
||||
$following = $this->profile->following;
|
||||
$following->map(function($i) {
|
||||
Redis::lpush($this->following_prefix, $i->id);
|
||||
});
|
||||
return $following;
|
||||
} else {
|
||||
return Redis::lrange($this->following_prefix, $offset, $limit);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue