From 0e6fbdfa5bd891cad051902d0fa5bcad4f5f8e2a Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 22 Mar 2021 11:38:32 +0900 Subject: [PATCH] refactoring --- src/models/repositories/note.ts | 7 +++---- src/models/repositories/user.ts | 11 ++++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts index 9771f6670..354ea4dc7 100644 --- a/src/models/repositories/note.ts +++ b/src/models/repositories/note.ts @@ -235,7 +235,7 @@ export class NoteRepository extends Repository { } public async packMany( - notes: (Note['id'] | Note)[], + notes: Note[], me?: User['id'] | User | null | undefined, options?: { detail?: boolean; @@ -245,11 +245,10 @@ export class NoteRepository extends Repository { if (notes.length === 0) return []; const meId = me ? typeof me === 'string' ? me : me.id : null; - const noteIds = notes.map(n => typeof n === 'object' ? n.id : n); const myReactionsMap = new Map(); if (meId) { - const renoteIds = notes.filter(n => (typeof n === 'object') && (n.renoteId != null)).map(n => (n as Note).renoteId!); - const targets = [...noteIds, ...renoteIds]; + const renoteIds = notes.filter(n => n.renoteId != null).map(n => n.renoteId!); + const targets = [...notes.map(n => n.id), ...renoteIds]; const myReactions = await NoteReactions.find({ userId: meId, noteId: In(targets), diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts index ffece291d..267e443cf 100644 --- a/src/models/repositories/user.ts +++ b/src/models/repositories/user.ts @@ -161,10 +161,11 @@ export class UserRepository extends Repository { const meId = me ? typeof me === 'string' ? me : me.id : null; const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null; - const pins = opts.detail ? await UserNotePinings.find({ - where: { userId: user.id }, - order: { id: 'DESC' } - }) : []; + const pins = opts.detail ? await UserNotePinings.createQueryBuilder('pin') + .where('pin.userId = :userId', { userId: user.id }) + .innerJoinAndSelect('pin.note', 'note') + .orderBy('id', 'DESC') + .getMany() : []; const profile = opts.detail ? await UserProfiles.findOneOrFail(user.id) : null; const falsy = opts.detail ? false : undefined; @@ -211,7 +212,7 @@ export class UserRepository extends Repository { followingCount: user.followingCount, notesCount: user.notesCount, pinnedNoteIds: pins.map(pin => pin.noteId), - pinnedNotes: Notes.packMany(pins.map(pin => pin.noteId), meId, { + pinnedNotes: Notes.packMany(pins.map(pin => pin.note!), meId, { detail: true }), pinnedPageId: profile!.pinnedPageId,