summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes/reactions.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/server/api/endpoints/notes/reactions.ts
parentUpdate ROADMAP.md (diff)
downloadsharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes/reactions.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/reactions.ts66
1 files changed, 40 insertions, 26 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/reactions.ts b/packages/backend/src/server/api/endpoints/notes/reactions.ts
index 15a62d394d..d57950f012 100644
--- a/packages/backend/src/server/api/endpoints/notes/reactions.ts
+++ b/packages/backend/src/server/api/endpoints/notes/reactions.ts
@@ -1,8 +1,12 @@
-import { DeepPartial, FindOptionsWhere } from 'typeorm';
-import { NoteReactions } from '@/models/index.js';
-import { NoteReaction } from '@/models/entities/note-reaction.js';
-import define from '../../define.js';
+import { DeepPartial } from 'typeorm';
+import { Inject, Injectable } from '@nestjs/common';
+import { NoteReactionsRepository } from '@/models/index.js';
+import type { NoteReaction } from '@/models/entities/NoteReaction.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { NoteReactionEntityService } from '@/core/entities/NoteReactionEntityService.js';
+import { DI } from '@/di-symbols.js';
import { ApiError } from '../../error.js';
+import type { FindOptionsWhere } from 'typeorm';
export const meta = {
tags: ['notes', 'reactions'],
@@ -45,28 +49,38 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const query = {
- noteId: ps.noteId,
- } as FindOptionsWhere<NoteReaction>;
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.noteReactionsRepository)
+ private noteReactionsRepository: NoteReactionsRepository,
- 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;
- }
+ private noteReactionEntityService: NoteReactionEntityService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const query = {
+ noteId: ps.noteId,
+ } as FindOptionsWhere<NoteReaction>;
- const reactions = await NoteReactions.find({
- where: query,
- take: ps.limit,
- skip: ps.offset,
- order: {
- id: -1,
- },
- relations: ['user', 'user.avatar', 'user.banner', '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;
+ }
- return await Promise.all(reactions.map(reaction => NoteReactions.pack(reaction, user)));
-});
+ const reactions = await this.noteReactionsRepository.find({
+ where: query,
+ take: ps.limit,
+ skip: ps.offset,
+ order: {
+ id: -1,
+ },
+ relations: ['user', 'user.avatar', 'user.banner', 'note'],
+ });
+
+ return await Promise.all(reactions.map(reaction => this.noteReactionEntityService.pack(reaction, me)));
+ });
+ }
+}