This commit is contained in:
syuilo 2023-09-20 11:29:10 +09:00
parent bb460a1785
commit c3db55b5b6
2 changed files with 8 additions and 1 deletions

View File

@ -15,6 +15,7 @@ import type { MiLocalUser } from '@/models/entities/User.js';
@Injectable()
export class ClipService {
public static NoSuchNoteError = class extends Error {};
public static NoSuchClipError = class extends Error {};
public static AlreadyAddedError = class extends Error {};
public static TooManyClipNotesError = class extends Error {};
@ -118,10 +119,14 @@ export class ClipService {
noteId: noteId,
clipId: clip.id,
});
} catch (e) {
} catch (e: any) {
if (isDuplicateKeyValueError(e)) {
throw new ClipService.AlreadyAddedError();
} else if (e.detail.includes('is not present in table "note".')) {
throw new ClipService.NoSuchNoteError();
}
throw e;
}
this.clipsRepository.update(clip.id, {

View File

@ -70,6 +70,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
} catch (e) {
if (e instanceof ClipService.NoSuchClipError) {
throw new ApiError(meta.errors.noSuchClip);
} else if (e instanceof ClipService.NoSuchNoteError) {
throw new ApiError(meta.errors.noSuchNote);
} else if (e instanceof ClipService.AlreadyAddedError) {
throw new ApiError(meta.errors.alreadyClipped);
} else if (e instanceof ClipService.TooManyClipNotesError) {