diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-22 12:41:33 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-22 12:41:33 +0900 |
| commit | 8f41dfec2e27c35809f97399cee7e4ad6be21056 (patch) | |
| tree | c653b97676e72c59236eedeec60ed48545e32264 /src/models | |
| parent | refactor: extract functions (diff) | |
| download | sharkey-8f41dfec2e27c35809f97399cee7e4ad6be21056.tar.gz sharkey-8f41dfec2e27c35809f97399cee7e4ad6be21056.tar.bz2 sharkey-8f41dfec2e27c35809f97399cee7e4ad6be21056.zip | |
perf(server): Reduce database query
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/repositories/note.ts | 4 | ||||
| -rw-r--r-- | src/models/repositories/notification.ts | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts index 354ea4dc70..73e18f6c5b 100644 --- a/src/models/repositories/note.ts +++ b/src/models/repositories/note.ts @@ -8,7 +8,7 @@ import { convertLegacyReaction, convertLegacyReactions, decodeReaction } from '. import { toString } from '../../mfm/to-string'; import { parse } from '../../mfm/parse'; import { NoteReaction } from '../entities/note-reaction'; -import { populateEmojis } from '../../misc/populate-emojis'; +import { aggregateNoteEmojis, populateEmojis, prefetchEmojis } from '../../misc/populate-emojis'; export type PackedNote = SchemaType<typeof packedNoteSchema>; @@ -259,6 +259,8 @@ export class NoteRepository extends Repository<Note> { } } + await prefetchEmojis(aggregateNoteEmojis(notes)); + return await Promise.all(notes.map(n => this.pack(n, me, { ...options, _hint_: { diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts index 4f6e797ef9..83fe11d5f7 100644 --- a/src/models/repositories/notification.ts +++ b/src/models/repositories/notification.ts @@ -6,6 +6,7 @@ import { SchemaType } from '../../misc/schema'; import { Note } from '../entities/note'; import { NoteReaction } from '../entities/note-reaction'; import { User } from '../entities/user'; +import { aggregateNoteEmojis, prefetchEmojis } from '../../misc/populate-emojis'; export type PackedNotification = SchemaType<typeof packedNotificationSchema>; @@ -98,6 +99,8 @@ export class NotificationRepository extends Repository<Notification> { myReactionsMap.set(target, myReactions.find(reaction => reaction.noteId === target) || null); } + await prefetchEmojis(aggregateNoteEmojis(notes)); + return await Promise.all(notifications.map(x => this.pack(x, { _hintForEachNotes_: { myReactions: myReactionsMap |