summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-22 12:41:33 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-22 12:41:33 +0900
commit8f41dfec2e27c35809f97399cee7e4ad6be21056 (patch)
treec653b97676e72c59236eedeec60ed48545e32264 /src/models
parentrefactor: extract functions (diff)
downloadsharkey-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.ts4
-rw-r--r--src/models/repositories/notification.ts3
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