diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-07 12:05:17 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-07 12:05:17 +0900 |
| commit | 71edc65d0d90c2152c91277ee4d45af2c27423a5 (patch) | |
| tree | f46800da21bd85fa37bf22525fde83bfdecea0d0 /packages/backend/src/core/FeaturedService.ts | |
| parent | enhance(backend): 3日以内に投稿されたノートのみハイライト... (diff) | |
| download | sharkey-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.ts | 11 |
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); + } } |