summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/i/pin.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api/endpoints/i/pin.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/i/pin.ts38
1 files changed, 24 insertions, 14 deletions
diff --git a/packages/backend/src/server/api/endpoints/i/pin.ts b/packages/backend/src/server/api/endpoints/i/pin.ts
index 67b7026be1..f31b0dc35e 100644
--- a/packages/backend/src/server/api/endpoints/i/pin.ts
+++ b/packages/backend/src/server/api/endpoints/i/pin.ts
@@ -1,7 +1,9 @@
-import { addPinned } from '@/services/i/pin.js';
-import define from '../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import type { UsersRepository } from '@/models/index.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import { NotePiningService } from '@/core/NotePiningService.js';
import { ApiError } from '../../error.js';
-import { Users } from '@/models/index.js';
export const meta = {
tags: ['account', 'notes'],
@@ -46,15 +48,23 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- await addPinned(user, ps.noteId).catch(e => {
- if (e.id === '70c4e51f-5bea-449c-a030-53bee3cce202') throw new ApiError(meta.errors.noSuchNote);
- if (e.id === '15a018eb-58e5-4da1-93be-330fcc5e4e1a') throw new ApiError(meta.errors.pinLimitExceeded);
- if (e.id === '23f0cf4e-59a3-4276-a91d-61a5891c1514') throw new ApiError(meta.errors.alreadyPinned);
- throw e;
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ private userEntityService: UserEntityService,
+ private notePiningService: NotePiningService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ await this.notePiningService.addPinned(me, ps.noteId).catch(err => {
+ if (err.id === '70c4e51f-5bea-449c-a030-53bee3cce202') throw new ApiError(meta.errors.noSuchNote);
+ if (err.id === '15a018eb-58e5-4da1-93be-330fcc5e4e1a') throw new ApiError(meta.errors.pinLimitExceeded);
+ if (err.id === '23f0cf4e-59a3-4276-a91d-61a5891c1514') throw new ApiError(meta.errors.alreadyPinned);
+ throw err;
+ });
- return await Users.pack<true, true>(user.id, user, {
- detail: true,
- });
-});
+ return await this.userEntityService.pack<true, true>(me.id, me, {
+ detail: true,
+ });
+ });
+ }
+}