diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-08 08:10:28 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-08 08:10:28 +0900 |
| commit | 2859cbab913dc836f4beb55cf967d1feeb87e6c3 (patch) | |
| tree | 063f62cf27488ca6fdbf8c41bce334aa7e945ab0 /packages/backend/src/core | |
| parent | perf(backend): use HyperLogLog instead of Set to improve hashtag chart perfor... (diff) | |
| download | misskey-2859cbab913dc836f4beb55cf967d1feeb87e6c3.tar.gz misskey-2859cbab913dc836f4beb55cf967d1feeb87e6c3.tar.bz2 misskey-2859cbab913dc836f4beb55cf967d1feeb87e6c3.zip | |
perf(backend): WebSocket接続が多い場合のパフォーマンスを向上
https: //github.com/MisskeyIO/misskey/pull/176
Co-Authored-By: KOBA789 <kobahide789@gmail.com>
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/entities/NoteEntityService.ts | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index e45a7992bb..abe4aafd6e 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -17,6 +17,7 @@ import type { MiNoteReaction } from '@/models/NoteReaction.js'; import type { UsersRepository, NotesRepository, FollowingsRepository, PollsRepository, PollVotesRepository, NoteReactionsRepository, ChannelsRepository } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; import { isNotNull } from '@/misc/is-not-null.js'; +import { DebounceLoader } from '@/misc/loader.js'; import type { OnModuleInit } from '@nestjs/common'; import type { CustomEmojiService } from '../CustomEmojiService.js'; import type { ReactionService } from '../ReactionService.js'; @@ -29,6 +30,7 @@ export class NoteEntityService implements OnModuleInit { private driveFileEntityService: DriveFileEntityService; private customEmojiService: CustomEmojiService; private reactionService: ReactionService; + private noteLoader = new DebounceLoader(this.findNoteOrFail); constructor( private moduleRef: ModuleRef, @@ -285,7 +287,7 @@ export class NoteEntityService implements OnModuleInit { }, options); const meId = me ? me.id : null; - const note = typeof src === 'object' ? src : await this.notesRepository.findOneOrFail({ where: { id: src }, relations: ['user'] }); + const note = typeof src === 'object' ? src : await this.noteLoader.load(src); const host = note.userHost; let text = note.text; @@ -450,4 +452,12 @@ export class NoteEntityService implements OnModuleInit { } return emojis.filter(x => x.name != null && x.host != null) as { name: string; host: string; }[]; } + + @bindThis + private findNoteOrFail(id: string): Promise<MiNote> { + return this.notesRepository.findOneOrFail({ + where: { id }, + relations: ['user'], + }); + } } |