NotesController: Handle new errors

Handle the AlreadyInDB and PermissionsUpdateInconsistent errors and correctly show them to the api user as BadRequest errors.

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares 2021-02-20 16:11:51 +01:00 committed by David Mehren
parent 13955aebe5
commit e538056252
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3

View file

@ -5,6 +5,7 @@
*/ */
import { import {
BadRequestException,
Body, Body,
Controller, Controller,
Delete, Delete,
@ -18,7 +19,11 @@ import {
UnauthorizedException, UnauthorizedException,
UseGuards, UseGuards,
} from '@nestjs/common'; } from '@nestjs/common';
import { NotInDBError } from '../../../errors/errors'; import {
AlreadyInDBError,
NotInDBError,
PermissionsUpdateInconsistentError,
} from '../../../errors/errors';
import { ConsoleLoggerService } from '../../../logger/console-logger.service'; import { ConsoleLoggerService } from '../../../logger/console-logger.service';
import { import {
NotePermissionsDto, NotePermissionsDto,
@ -100,9 +105,16 @@ export class NotesController {
throw new UnauthorizedException('Creating note denied!'); throw new UnauthorizedException('Creating note denied!');
} }
this.logger.debug('Got raw markdown:\n' + text, 'createNamedNote'); this.logger.debug('Got raw markdown:\n' + text, 'createNamedNote');
return this.noteService.toNoteDto( try {
await this.noteService.createNote(text, noteAlias, req.user), return this.noteService.toNoteDto(
); await this.noteService.createNote(text, noteAlias, req.user),
);
} catch (e) {
if (e instanceof AlreadyInDBError) {
throw new BadRequestException(e.message);
}
throw e;
}
} }
@UseGuards(TokenAuthGuard) @UseGuards(TokenAuthGuard)
@ -191,6 +203,9 @@ export class NotesController {
if (e instanceof NotInDBError) { if (e instanceof NotInDBError) {
throw new NotFoundException(e.message); throw new NotFoundException(e.message);
} }
if (e instanceof PermissionsUpdateInconsistentError) {
throw new BadRequestException(e.message);
}
throw e; throw e;
} }
} }