summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-03-03 20:56:50 +0900
committerGitHub <noreply@github.com>2023-03-03 20:56:50 +0900
commitb23a9b1a88f481c50fc9c8f126608b90fab18266 (patch)
tree04e4fba228d2c2bb86ab6007be641d5f9e5daa17 /packages/backend/src/core
parentMerge pull request #10177 from misskey-dev/develop (diff)
parent13.9.1 (diff)
downloadmisskey-b23a9b1a88f481c50fc9c8f126608b90fab18266.tar.gz
misskey-b23a9b1a88f481c50fc9c8f126608b90fab18266.tar.bz2
misskey-b23a9b1a88f481c50fc9c8f126608b90fab18266.zip
Merge pull request #10181 from misskey-dev/develop
Release: 13.9.1
Diffstat (limited to 'packages/backend/src/core')
-rw-r--r--packages/backend/src/core/entities/DriveFileEntityService.ts24
-rw-r--r--packages/backend/src/core/entities/GalleryPostEntityService.ts3
-rw-r--r--packages/backend/src/core/entities/NoteEntityService.ts8
3 files changed, 4 insertions, 31 deletions
diff --git a/packages/backend/src/core/entities/DriveFileEntityService.ts b/packages/backend/src/core/entities/DriveFileEntityService.ts
index f5b1f98153..158fafa9d5 100644
--- a/packages/backend/src/core/entities/DriveFileEntityService.ts
+++ b/packages/backend/src/core/entities/DriveFileEntityService.ts
@@ -1,5 +1,5 @@
import { forwardRef, Inject, Injectable } from '@nestjs/common';
-import { DataSource, In } from 'typeorm';
+import { DataSource } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { NotesRepository, DriveFilesRepository } from '@/models/index.js';
import type { Config } from '@/config.js';
@@ -21,7 +21,6 @@ type PackOptions = {
};
import { bindThis } from '@/decorators.js';
import { isMimeImage } from '@/misc/is-mime-image.js';
-import { isNotNull } from '@/misc/is-not-null.js';
@Injectable()
export class DriveFileEntityService {
@@ -256,29 +255,10 @@ export class DriveFileEntityService {
@bindThis
public async packMany(
- files: DriveFile[],
+ files: (DriveFile['id'] | DriveFile)[],
options?: PackOptions,
): Promise<Packed<'DriveFile'>[]> {
const items = await Promise.all(files.map(f => this.packNullable(f, options)));
return items.filter((x): x is Packed<'DriveFile'> => x != null);
}
-
- @bindThis
- public async packManyByIdsMap(
- fileIds: DriveFile['id'][],
- options?: PackOptions,
- ): Promise<Map<Packed<'DriveFile'>['id'], Packed<'DriveFile'>>> {
- const files = await this.driveFilesRepository.findBy({ id: In(fileIds) });
- const packedFiles = await this.packMany(files, options);
- return new Map(packedFiles.map(f => [f.id, f]));
- }
-
- @bindThis
- public async packManyByIds(
- fileIds: DriveFile['id'][],
- options?: PackOptions,
- ): Promise<Packed<'DriveFile'>[]> {
- const filesMap = await this.packManyByIdsMap(fileIds, options);
- return fileIds.map(id => filesMap.get(id)).filter(isNotNull);
- }
}
diff --git a/packages/backend/src/core/entities/GalleryPostEntityService.ts b/packages/backend/src/core/entities/GalleryPostEntityService.ts
index fb147ae181..ab29e7dba1 100644
--- a/packages/backend/src/core/entities/GalleryPostEntityService.ts
+++ b/packages/backend/src/core/entities/GalleryPostEntityService.ts
@@ -41,8 +41,7 @@ export class GalleryPostEntityService {
title: post.title,
description: post.description,
fileIds: post.fileIds,
- // TODO: packMany causes N+1 queries
- files: this.driveFileEntityService.packManyByIds(post.fileIds),
+ files: this.driveFileEntityService.packMany(post.fileIds),
tags: post.tags.length > 0 ? post.tags : undefined,
isSensitive: post.isSensitive,
likedCount: post.likedCount,
diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts
index c732a98a11..2ffe5f1c21 100644
--- a/packages/backend/src/core/entities/NoteEntityService.ts
+++ b/packages/backend/src/core/entities/NoteEntityService.ts
@@ -11,7 +11,6 @@ import type { Note } from '@/models/entities/Note.js';
import type { NoteReaction } from '@/models/entities/NoteReaction.js';
import type { UsersRepository, NotesRepository, FollowingsRepository, PollsRepository, PollVotesRepository, NoteReactionsRepository, ChannelsRepository, DriveFilesRepository } from '@/models/index.js';
import { bindThis } from '@/decorators.js';
-import { isNotNull } from '@/misc/is-not-null.js';
import type { OnModuleInit } from '@nestjs/common';
import type { CustomEmojiService } from '../CustomEmojiService.js';
import type { ReactionService } from '../ReactionService.js';
@@ -258,7 +257,6 @@ export class NoteEntityService implements OnModuleInit {
skipHide?: boolean;
_hint_?: {
myReactions: Map<Note['id'], NoteReaction | null>;
- packedFiles: Map<Note['fileIds'][number], Packed<'DriveFile'>>;
};
},
): Promise<Packed<'Note'>> {
@@ -286,7 +284,6 @@ export class NoteEntityService implements OnModuleInit {
const reactionEmojiNames = Object.keys(note.reactions)
.filter(x => x.startsWith(':') && x.includes('@') && !x.includes('@.')) // リモートカスタム絵文字のみ
.map(x => this.reactionService.decodeReaction(x).reaction.replaceAll(':', ''));
- const packedFiles = options?._hint_?.packedFiles;
const packed: Packed<'Note'> = await awaitAll({
id: note.id,
@@ -307,7 +304,7 @@ export class NoteEntityService implements OnModuleInit {
emojis: host != null ? this.customEmojiService.populateEmojis(note.emojis, host) : undefined,
tags: note.tags.length > 0 ? note.tags : undefined,
fileIds: note.fileIds,
- files: packedFiles != null ? note.fileIds.map(fi => packedFiles.get(fi)).filter(isNotNull) : this.driveFileEntityService.packManyByIds(note.fileIds),
+ files: this.driveFileEntityService.packMany(note.fileIds),
replyId: note.replyId,
renoteId: note.renoteId,
channelId: note.channelId ?? undefined,
@@ -391,14 +388,11 @@ export class NoteEntityService implements OnModuleInit {
}
await this.customEmojiService.prefetchEmojis(this.customEmojiService.aggregateNoteEmojis(notes));
- const fileIds = notes.flatMap(n => n.fileIds);
- const packedFiles = await this.driveFileEntityService.packManyByIdsMap(fileIds);
return await Promise.all(notes.map(n => this.pack(n, me, {
...options,
_hint_: {
myReactions: myReactionsMap,
- packedFiles,
},
})));
}