forked from GNUsocial/gnu-social
[ENTITY][Note][CONFIG] Use getListPartialCache for getReplies. Add feeds/cached_replies config entry to control how many replies get cached
This commit is contained in:
parent
85ce6bfd41
commit
d5f90a1206
@ -275,6 +275,7 @@ parameters:
|
|||||||
|
|
||||||
feeds:
|
feeds:
|
||||||
entries_per_page: 32
|
entries_per_page: 32
|
||||||
|
cached_replies: 8
|
||||||
|
|
||||||
plugin_tree_notes:
|
plugin_tree_notes:
|
||||||
feed_replies: 3
|
feed_replies: 3
|
||||||
|
@ -28,10 +28,10 @@ use App\Core\Cache;
|
|||||||
use App\Core\DB\DB;
|
use App\Core\DB\DB;
|
||||||
use App\Core\Entity;
|
use App\Core\Entity;
|
||||||
use App\Core\Event;
|
use App\Core\Event;
|
||||||
use function App\Core\I18n\_m;
|
|
||||||
use App\Core\Log;
|
use App\Core\Log;
|
||||||
use App\Core\Router\Router;
|
use App\Core\Router\Router;
|
||||||
use App\Core\VisibilityScope;
|
use App\Core\VisibilityScope;
|
||||||
|
use App\Util\Common;
|
||||||
use App\Util\Exception\ClientException;
|
use App\Util\Exception\ClientException;
|
||||||
use App\Util\Exception\NoSuchNoteException;
|
use App\Util\Exception\NoSuchNoteException;
|
||||||
use App\Util\Formatting;
|
use App\Util\Formatting;
|
||||||
@ -39,9 +39,10 @@ use Component\Avatar\Avatar;
|
|||||||
use Component\Conversation\Entity\Conversation;
|
use Component\Conversation\Entity\Conversation;
|
||||||
use Component\Language\Entity\Language;
|
use Component\Language\Entity\Language;
|
||||||
use Component\Notification\Entity\Attention;
|
use Component\Notification\Entity\Attention;
|
||||||
use DateTimeInterface;
|
|
||||||
use function mb_substr;
|
|
||||||
use const PREG_SPLIT_NO_EMPTY;
|
use const PREG_SPLIT_NO_EMPTY;
|
||||||
|
use DateTimeInterface;
|
||||||
|
use function App\Core\I18n\_m;
|
||||||
|
use function mb_substr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entity for notes
|
* Entity for notes
|
||||||
@ -406,13 +407,20 @@ class Note extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getReplies(int $offset = 0, int $limit = null): array
|
public function getReplies(int $offset = 0, int $limit = null): array
|
||||||
{
|
{
|
||||||
return Cache::getList(self::cacheKeys($this->getId())['replies'],
|
return Cache::getListPartialCache(
|
||||||
fn () => DB::findBy(self::class, [
|
key: self::cacheKeys($this->getId())['replies'],
|
||||||
'reply_to' => $this->getId()
|
calculate: function (int $limit, int $offset) {
|
||||||
],
|
return DB::findBy(
|
||||||
order_by: ['created' => 'ASC', 'id' => 'ASC']),
|
self::class,
|
||||||
|
['reply_to' => $this->getId()],
|
||||||
|
order_by: ['created' => 'ASC', 'id' => 'ASC'],
|
||||||
|
limit: $limit,
|
||||||
|
offset: $offset
|
||||||
|
);
|
||||||
|
},
|
||||||
|
max_cache_count: Common::config('feeds', 'cached_replies'),
|
||||||
left: $offset,
|
left: $offset,
|
||||||
right: $limit
|
right: $limit - $offset
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user