forked from mirror/pixelfed
48 lines
1018 B
PHP
48 lines
1018 B
PHP
|
<?php
|
||
|
|
||
|
namespace App\Services;
|
||
|
|
||
|
use Illuminate\Support\Facades\Cache;
|
||
|
use Illuminate\Support\Facades\Redis;
|
||
|
|
||
|
class LiveStreamService
|
||
|
{
|
||
|
const CACHE_KEY = 'pf:services:livestream:';
|
||
|
|
||
|
public static function getComments($id, $start = 0, $stop = 14)
|
||
|
{
|
||
|
$key = self::CACHE_KEY . 'chat:' . $id;
|
||
|
return Redis::lrange($key, $start, $stop);
|
||
|
}
|
||
|
|
||
|
public static function addComment($id, $val)
|
||
|
{
|
||
|
$key = self::CACHE_KEY . 'chat:' . $id;
|
||
|
if(config('database.redis.client') === 'phpredis') {
|
||
|
if(self::commentsCount($id) >= config('livestreaming.comments.max_falloff')) {
|
||
|
Redis::rpop($key);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return Redis::lpush($key, $val);
|
||
|
}
|
||
|
|
||
|
public static function commentsCount($id)
|
||
|
{
|
||
|
$key = self::CACHE_KEY . 'chat:' . $id;
|
||
|
return Redis::llen($key);
|
||
|
}
|
||
|
|
||
|
public static function deleteComment($id, $val)
|
||
|
{
|
||
|
$key = self::CACHE_KEY . 'chat:' . $id;
|
||
|
return Redis::lrem($key, 0, $val);
|
||
|
}
|
||
|
|
||
|
public static function clearChat($id, $val)
|
||
|
{
|
||
|
$key = self::CACHE_KEY . 'chat:' . $id;
|
||
|
return Redis::del($key);
|
||
|
}
|
||
|
}
|