diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-06 10:09:44 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-06 10:09:44 +0900 |
| commit | 384a3bed0953888a322459bfc5e9b9402eadc85a (patch) | |
| tree | b63812ae5c40d955ae371af1ba633e209a01829b /packages/backend/src | |
| parent | 13.11.0.beta-1 (diff) | |
| download | misskey-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.ts | 11 |
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) |