summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-09-26 02:26:30 +0200
committerMar0xy <marie@kaifa.ch>2023-09-26 02:26:30 +0200
commit8595a325ceb24e5a3e2710c2dc78d821f45181bd (patch)
treeafbce0c498dfd3b324dc30c8dfba847d07117c6a /packages/backend/src/server/api/endpoints/notes
parentfix: expiredafter time on poll (diff)
parentbuild(deps): bump actions/checkout from 4.0.0 to 4.1.0 (#11900) (diff)
downloadsharkey-8595a325ceb24e5a3e2710c2dc78d821f45181bd.tar.gz
sharkey-8595a325ceb24e5a3e2710c2dc78d821f45181bd.tar.bz2
sharkey-8595a325ceb24e5a3e2710c2dc78d821f45181bd.zip
merge: upstream
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/notes/reactions.ts24
2 files changed, 10 insertions, 16 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/delete.ts b/packages/backend/src/server/api/endpoints/notes/delete.ts
index 74062a58f5..55aaaf4f78 100644
--- a/packages/backend/src/server/api/endpoints/notes/delete.ts
+++ b/packages/backend/src/server/api/endpoints/notes/delete.ts
@@ -70,7 +70,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
// この操作を行うのが投稿者とは限らない(例えばモデレーター)ため
- await this.noteDeleteService.delete(await this.usersRepository.findOneByOrFail({ id: note.userId }), note);
+ await this.noteDeleteService.delete(await this.usersRepository.findOneByOrFail({ id: note.userId }), note, false, me);
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/notes/reactions.ts b/packages/backend/src/server/api/endpoints/notes/reactions.ts
index dae31364ee..a2c1778199 100644
--- a/packages/backend/src/server/api/endpoints/notes/reactions.ts
+++ b/packages/backend/src/server/api/endpoints/notes/reactions.ts
@@ -4,12 +4,13 @@
*/
import { Inject, Injectable } from '@nestjs/common';
+import { Brackets, type FindOptionsWhere } from 'typeorm';
import type { NoteReactionsRepository } from '@/models/_.js';
import type { MiNoteReaction } from '@/models/NoteReaction.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { NoteReactionEntityService } from '@/core/entities/NoteReactionEntityService.js';
import { DI } from '@/di-symbols.js';
-import type { FindOptionsWhere } from 'typeorm';
+import { QueryService } from '@/core/QueryService.js';
export const meta = {
tags: ['notes', 'reactions'],
@@ -44,7 +45,6 @@ export const paramDef = {
noteId: { type: 'string', format: 'misskey:id' },
type: { type: 'string', nullable: true },
limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
- offset: { type: 'integer', default: 0 },
sinceId: { type: 'string', format: 'misskey:id' },
untilId: { type: 'string', format: 'misskey:id' },
},
@@ -58,29 +58,23 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private noteReactionsRepository: NoteReactionsRepository,
private noteReactionEntityService: NoteReactionEntityService,
+ private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
- const query = {
- noteId: ps.noteId,
- } as FindOptionsWhere<MiNoteReaction>;
+ const query = this.queryService.makePaginationQuery(this.noteReactionsRepository.createQueryBuilder('reaction'), ps.sinceId, ps.untilId)
+ .andWhere('reaction.noteId = :noteId', { noteId: ps.noteId })
+ .leftJoinAndSelect('reaction.user', 'user')
+ .leftJoinAndSelect('reaction.note', 'note');
if (ps.type) {
// ローカルリアクションはホスト名が . とされているが
// DB 上ではそうではないので、必要に応じて変換
const suffix = '@.:';
const type = ps.type.endsWith(suffix) ? ps.type.slice(0, ps.type.length - suffix.length) + ':' : ps.type;
- query.reaction = type;
+ query.andWhere('reaction.reaction = :type', { type });
}
- const reactions = await this.noteReactionsRepository.find({
- where: query,
- take: ps.limit,
- skip: ps.offset,
- order: {
- id: -1,
- },
- relations: ['user', 'note'],
- });
+ const reactions = await query.limit(ps.limit).getMany();
return await Promise.all(reactions.map(reaction => this.noteReactionEntityService.pack(reaction, me)));
});