summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-04-06 10:09:44 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-04-06 10:09:44 +0900
commit384a3bed0953888a322459bfc5e9b9402eadc85a (patch)
treeb63812ae5c40d955ae371af1ba633e209a01829b /packages/backend/src
parent13.11.0.beta-1 (diff)
downloadmisskey-384a3bed0953888a322459bfc5e9b9402eadc85a.tar.gz
misskey-384a3bed0953888a322459bfc5e9b9402eadc85a.tar.bz2
misskey-384a3bed0953888a322459bfc5e9b9402eadc85a.zip
perf(backend): reduce db query
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/core/activitypub/models/ApNoteService.ts11
1 files changed, 7 insertions, 4 deletions
diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts
index 28bcbc6fab..2665e85346 100644
--- a/packages/backend/src/core/activitypub/models/ApNoteService.ts
+++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts
@@ -1,5 +1,6 @@
import { forwardRef, Inject, Injectable } from '@nestjs/common';
import promiseLimit from 'promise-limit';
+import { In } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { PollsRepository, EmojisRepository } from '@/models/index.js';
import type { Config } from '@/config.js';
@@ -341,15 +342,17 @@ export class ApNoteService {
if (!tags) return [];
const eomjiTags = toArray(tags).filter(isEmoji);
+
+ const existingEmojis = await this.emojisRepository.findBy({
+ host,
+ name: In(eomjiTags.map(tag => tag.name!.replace(/^:/, '').replace(/:$/, ''))),
+ });
return await Promise.all(eomjiTags.map(async tag => {
const name = tag.name!.replace(/^:/, '').replace(/:$/, '');
tag.icon = toSingle(tag.icon);
- const exists = await this.emojisRepository.findOneBy({
- host,
- name,
- });
+ const exists = existingEmojis.find(x => x.name === name);
if (exists) {
if ((tag.updated != null && exists.updatedAt == null)