summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/FeaturedService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-07 12:05:17 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-07 12:05:17 +0900
commit71edc65d0d90c2152c91277ee4d45af2c27423a5 (patch)
treef46800da21bd85fa37bf22525fde83bfdecea0d0 /packages/backend/src/core/FeaturedService.ts
parentenhance(backend): 3日以内に投稿されたノートのみハイライト... (diff)
downloadsharkey-71edc65d0d90c2152c91277ee4d45af2c27423a5.tar.gz
sharkey-71edc65d0d90c2152c91277ee4d45af2c27423a5.tar.bz2
sharkey-71edc65d0d90c2152c91277ee4d45af2c27423a5.zip
enhance(backend): improve hashtags/trend performance
Diffstat (limited to 'packages/backend/src/core/FeaturedService.ts')
-rw-r--r--packages/backend/src/core/FeaturedService.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/packages/backend/src/core/FeaturedService.ts b/packages/backend/src/core/FeaturedService.ts
index 945c23b0e2..62b50ed38d 100644
--- a/packages/backend/src/core/FeaturedService.ts
+++ b/packages/backend/src/core/FeaturedService.ts
@@ -11,6 +11,7 @@ import { bindThis } from '@/decorators.js';
const GLOBAL_NOTES_RANKING_WINDOW = 1000 * 60 * 60 * 24 * 3; // 3日ごと
const PER_USER_NOTES_RANKING_WINDOW = 1000 * 60 * 60 * 24 * 7; // 1週間ごと
+const HASHTAG_RANKING_WINDOW = 1000 * 60 * 60; // 1時間ごと
@Injectable()
export class FeaturedService {
@@ -89,6 +90,11 @@ export class FeaturedService {
}
@bindThis
+ public updateHashtagsRanking(hashtag: string, score = 1): Promise<void> {
+ return this.updateRankingOf('featuredHashtagsRanking', HASHTAG_RANKING_WINDOW, hashtag, score);
+ }
+
+ @bindThis
public getGlobalNotesRanking(limit: number): Promise<MiNote['id'][]> {
return this.getRankingOf('featuredGlobalNotesRanking', GLOBAL_NOTES_RANKING_WINDOW, limit);
}
@@ -102,4 +108,9 @@ export class FeaturedService {
public getPerUserNotesRanking(userId: MiUser['id'], limit: number): Promise<MiNote['id'][]> {
return this.getRankingOf(`featuredPerUserNotesRanking:${userId}`, PER_USER_NOTES_RANKING_WINDOW, limit);
}
+
+ @bindThis
+ public getHashtagsRanking(limit: number): Promise<string[]> {
+ return this.getRankingOf('featuredHashtagsRanking', HASHTAG_RANKING_WINDOW, limit);
+ }
}