Limit NotificationService to 400 items

This commit is contained in:
Daniel Supernault 2022-08-17 23:08:40 -06:00
parent 284d6fedaf
commit f6ed560e78
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 15 additions and 2 deletions

View file

@ -2449,7 +2449,7 @@ class ApiV1Controller extends Controller
'media_ids' => 'sometimes|array|max:' . config_cache('pixelfed.max_album_length'),
'sensitive' => 'nullable',
'visibility' => 'string|in:private,unlisted,public',
'spoiler_text' => 'sometimes|string|max:140',
'spoiler_text' => 'sometimes|max:140',
]);
if(config('costar.enabled') == true) {

View file

@ -194,6 +194,9 @@ class NotificationService {
public static function set($id, $val)
{
if(self::count($id) > 400) {
Redis::zpopmin(self::CACHE_KEY . $id);
}
return Redis::zadd(self::CACHE_KEY . $id, $val, $val);
}
@ -220,7 +223,7 @@ class NotificationService {
public static function getNotification($id)
{
return Cache::remember('service:notification:'.$id, 86400, function() use($id) {
$notification = Cache::remember('service:notification:'.$id, 86400, function() use($id) {
$n = Notification::with('item')->find($id);
if(!$n) {
@ -238,6 +241,16 @@ class NotificationService {
$resource = new Fractal\Resource\Item($n, new NotificationTransformer());
return $fractal->createData($resource)->toArray();
});
if(!$notification) {
return;
}
if(isset($notification['account'])) {
$notification['account'] = AccountService::get($notification['account']['id'], true);
}
return $notification;
}
public static function setNotification(Notification $notification)