diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 16:14:24 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 16:14:24 +0900 |
| commit | c2009acb2d3a505f8d140827471cf953f6d922e6 (patch) | |
| tree | 0344bd26aee107c2811c6170e10f84af939caf1b /packages/backend/src/server/api/endpoints/clips/add-note.ts | |
| parent | fix missing import (diff) | |
| download | sharkey-c2009acb2d3a505f8d140827471cf953f6d922e6.tar.gz sharkey-c2009acb2d3a505f8d140827471cf953f6d922e6.tar.bz2 sharkey-c2009acb2d3a505f8d140827471cf953f6d922e6.zip | |
enhance: クリップおよびクリップ内のノートの作成可能数を設定可能に
Diffstat (limited to 'packages/backend/src/server/api/endpoints/clips/add-note.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/clips/add-note.ts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/clips/add-note.ts b/packages/backend/src/server/api/endpoints/clips/add-note.ts index c5ac4f22d7..3cf096c242 100644 --- a/packages/backend/src/server/api/endpoints/clips/add-note.ts +++ b/packages/backend/src/server/api/endpoints/clips/add-note.ts @@ -5,6 +5,7 @@ import { IdService } from '@/core/IdService.js'; import { DI } from '@/di-symbols.js'; import type { ClipNotesRepository, ClipsRepository } from '@/models/index.js'; import { GetterService } from '@/server/api/GetterService.js'; +import { RoleService } from '@/core/RoleService.js'; import { ApiError } from '../../error.js'; export const meta = { @@ -37,6 +38,12 @@ export const meta = { code: 'ALREADY_CLIPPED', id: '734806c4-542c-463a-9311-15c512803965', }, + + tooManyClipNotes: { + message: 'You cannot add notes to the clip any more.', + code: 'TOO_MANY_CLIP_NOTES', + id: 'f0dba960-ff73-4615-8df4-d6ac5d9dc118', + }, }, } as const; @@ -60,6 +67,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { private clipNotesRepository: ClipNotesRepository, private idService: IdService, + private roleService: RoleService, private getterService: GetterService, ) { super(meta, paramDef, async (ps, me) => { @@ -86,6 +94,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { throw new ApiError(meta.errors.alreadyClipped); } + const currentCount = await this.clipNotesRepository.countBy({ + clipId: clip.id, + }); + if (currentCount > (await this.roleService.getUserRoleOptions(me.id)).noteEachClipsLimit) { + throw new ApiError(meta.errors.tooManyClipNotes); + } + await this.clipNotesRepository.insert({ id: this.idService.genId(), noteId: note.id, |