From 71edc65d0d90c2152c91277ee4d45af2c27423a5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 7 Oct 2023 12:05:17 +0900 Subject: enhance(backend): improve hashtags/trend performance --- packages/backend/src/core/FeaturedService.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'packages/backend/src/core/FeaturedService.ts') 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 { @@ -88,6 +89,11 @@ export class FeaturedService { return this.updateRankingOf(`featuredPerUserNotesRanking:${userId}`, PER_USER_NOTES_RANKING_WINDOW, noteId, score); } + @bindThis + public updateHashtagsRanking(hashtag: string, score = 1): Promise { + return this.updateRankingOf('featuredHashtagsRanking', HASHTAG_RANKING_WINDOW, hashtag, score); + } + @bindThis public getGlobalNotesRanking(limit: number): Promise { return this.getRankingOf('featuredGlobalNotesRanking', GLOBAL_NOTES_RANKING_WINDOW, limit); @@ -102,4 +108,9 @@ export class FeaturedService { public getPerUserNotesRanking(userId: MiUser['id'], limit: number): Promise { return this.getRankingOf(`featuredPerUserNotesRanking:${userId}`, PER_USER_NOTES_RANKING_WINDOW, limit); } + + @bindThis + public getHashtagsRanking(limit: number): Promise { + return this.getRankingOf('featuredHashtagsRanking', HASHTAG_RANKING_WINDOW, limit); + } } -- cgit v1.2.3-freya