From 2756f553c68082342a784ef716c62da6cea6f3ca Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 22 Feb 2019 11:46:58 +0900 Subject: Improve error handling of API (#4345) * wip * wip * wip * Update attached_notes.ts * wip * Refactor * wip * wip * wip * wip * wip * wip * wip * wip * Update call.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * :v: * Fix --- src/server/api/endpoints/notes/favorites/create.ts | 26 +++++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'src/server/api/endpoints/notes/favorites/create.ts') diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts index 8ec0891a31..bdb4aff72d 100644 --- a/src/server/api/endpoints/notes/favorites/create.ts +++ b/src/server/api/endpoints/notes/favorites/create.ts @@ -3,6 +3,7 @@ import ID, { transform } from '../../../../../misc/cafy-id'; import Favorite from '../../../../../models/favorite'; import Note from '../../../../../models/note'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { stability: 'stable', @@ -25,17 +26,31 @@ export const meta = { 'en-US': 'Target note ID.' } } + }, + + errors: { + noSuchNote: { + message: 'No such note.', + code: 'NO_SUCH_NOTE', + id: '6dd26674-e060-4816-909a-45ba3f4da458' + }, + + alreadyFavorited: { + message: 'The note has already been marked as a favorite.', + code: 'ALREADY_FAVORITED', + id: 'a402c12b-34dd-41d2-97d8-4d2ffd96a1a6' + }, } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { // Get favoritee const note = await Note.findOne({ _id: ps.noteId }); if (note === null) { - return rej('note not found'); + throw new ApiError(meta.errors.noSuchNote); } // if already favorited @@ -45,7 +60,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { }); if (exist !== null) { - return rej('already favorited'); + throw new ApiError(meta.errors.alreadyFavorited); } // Create favorite @@ -55,6 +70,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { userId: user._id }); - // Send response - res(); -})); + return; +}); -- cgit v1.3.1-freya