mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-17 00:24:43 -04:00
History: Add history service and usage
Add history service to allow for CRUD operations. Use history service in controllers to: 1. Allow manipulating of history entries 2. Guaranty the correct existence of history entries Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
parent
300b464efd
commit
e55e62c2cd
8 changed files with 173 additions and 118 deletions
|
@ -28,6 +28,7 @@ import { RevisionsService } from '../../../revisions/revisions.service';
|
|||
import { MarkdownBody } from '../../utils/markdownbody-decorator';
|
||||
import { TokenAuthGuard } from '../../../auth/token-auth.guard';
|
||||
import { ApiSecurity } from '@nestjs/swagger';
|
||||
import { HistoryService } from '../../../history/history.service';
|
||||
import { NoteDto } from '../../../notes/note.dto';
|
||||
import { NoteMetadataDto } from '../../../notes/note-metadata.dto';
|
||||
import { RevisionMetadataDto } from '../../../revisions/revision-metadata.dto';
|
||||
|
@ -40,6 +41,7 @@ export class NotesController {
|
|||
private readonly logger: ConsoleLoggerService,
|
||||
private noteService: NotesService,
|
||||
private revisionsService: RevisionsService,
|
||||
private historyService: HistoryService,
|
||||
) {
|
||||
this.logger.setContext(NotesController.name);
|
||||
}
|
||||
|
@ -57,6 +59,22 @@ export class NotesController {
|
|||
);
|
||||
}
|
||||
|
||||
@UseGuards(TokenAuthGuard)
|
||||
@Get(':noteIdOrAlias')
|
||||
async getNote(@Request() req, @Param('noteIdOrAlias') noteIdOrAlias: string) {
|
||||
// ToDo: check if user is allowed to view this note
|
||||
try {
|
||||
const note = await this.noteService.getNoteByIdOrAlias(noteIdOrAlias);
|
||||
await this.historyService.createOrUpdateHistoryEntry(note, req.user);
|
||||
return this.noteService.toNoteDto(note);
|
||||
} catch (e) {
|
||||
if (e instanceof NotInDBError) {
|
||||
throw new NotFoundException(e.message);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@UseGuards(TokenAuthGuard)
|
||||
@Post(':noteAlias')
|
||||
async createNamedNote(
|
||||
|
@ -71,25 +89,6 @@ export class NotesController {
|
|||
);
|
||||
}
|
||||
|
||||
@UseGuards(TokenAuthGuard)
|
||||
@Get(':noteIdOrAlias')
|
||||
async getNote(
|
||||
@Request() req,
|
||||
@Param('noteIdOrAlias') noteIdOrAlias: string,
|
||||
): Promise<NoteDto> {
|
||||
// ToDo: check if user is allowed to view this note
|
||||
try {
|
||||
return this.noteService.toNoteDto(
|
||||
await this.noteService.getNoteByIdOrAlias(noteIdOrAlias),
|
||||
);
|
||||
} catch (e) {
|
||||
if (e instanceof NotInDBError) {
|
||||
throw new NotFoundException(e.message);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@UseGuards(TokenAuthGuard)
|
||||
@Delete(':noteIdOrAlias')
|
||||
async deleteNote(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue