mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-28 21:03:57 -05:00
refactor(edit): lazy-load relations
Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
parent
7f7886c5a7
commit
4e70044a2c
5 changed files with 26 additions and 20 deletions
|
@ -14,10 +14,14 @@ import {
|
|||
Param,
|
||||
Post,
|
||||
UseGuards,
|
||||
UseInterceptors
|
||||
UseInterceptors,
|
||||
} from '@nestjs/common';
|
||||
|
||||
import { AlreadyInDBError, ForbiddenIdError, NotInDBError } from '../../../errors/errors';
|
||||
import {
|
||||
AlreadyInDBError,
|
||||
ForbiddenIdError,
|
||||
NotInDBError,
|
||||
} from '../../../errors/errors';
|
||||
import { HistoryService } from '../../../history/history.service';
|
||||
import { SessionGuard } from '../../../identity/session.guard';
|
||||
import { ConsoleLoggerService } from '../../../logger/console-logger.service';
|
||||
|
|
|
@ -55,11 +55,11 @@ export class PermissionsGuard implements CanActivate {
|
|||
const note = await getNote(this.noteService, noteIdOrAlias);
|
||||
switch (permissions[0]) {
|
||||
case Permission.READ:
|
||||
return this.permissionsService.mayRead(user, note);
|
||||
return await this.permissionsService.mayRead(user, note);
|
||||
case Permission.WRITE:
|
||||
return this.permissionsService.mayWrite(user, note);
|
||||
return await this.permissionsService.mayWrite(user, note);
|
||||
case Permission.OWNER:
|
||||
return this.permissionsService.isOwner(user, note);
|
||||
return await this.permissionsService.isOwner(user, note);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -713,18 +713,18 @@ describe('NotesService', () => {
|
|||
const revisions = await note.revisions;
|
||||
revisions[0].edits = [
|
||||
{
|
||||
revisions: revisions,
|
||||
revisions: Promise.resolve(revisions),
|
||||
startPos: 0,
|
||||
endPos: 1,
|
||||
updatedAt: new Date(1549312452000),
|
||||
author: author,
|
||||
author: Promise.resolve(author),
|
||||
} as Edit,
|
||||
{
|
||||
revisions: revisions,
|
||||
revisions: Promise.resolve(revisions),
|
||||
startPos: 0,
|
||||
endPos: 1,
|
||||
updatedAt: new Date(1549312452001),
|
||||
author: author,
|
||||
author: Promise.resolve(author),
|
||||
} as Edit,
|
||||
];
|
||||
revisions[0].createdAt = new Date(1549312452000);
|
||||
|
@ -812,18 +812,18 @@ describe('NotesService', () => {
|
|||
const revisions = await note.revisions;
|
||||
revisions[0].edits = [
|
||||
{
|
||||
revisions: revisions,
|
||||
revisions: Promise.resolve(revisions),
|
||||
startPos: 0,
|
||||
endPos: 1,
|
||||
updatedAt: new Date(1549312452000),
|
||||
author: author,
|
||||
author: Promise.resolve(author),
|
||||
} as Edit,
|
||||
{
|
||||
revisions: revisions,
|
||||
revisions: Promise.resolve(revisions),
|
||||
startPos: 0,
|
||||
endPos: 1,
|
||||
updatedAt: new Date(1549312452001),
|
||||
author: author,
|
||||
author: Promise.resolve(author),
|
||||
} as Edit,
|
||||
];
|
||||
revisions[0].createdAt = new Date(1549312452000);
|
||||
|
|
|
@ -343,9 +343,11 @@ export class NotesService {
|
|||
if (lastRevision && lastRevision.edits) {
|
||||
// Sort the last Revisions Edits by their updatedAt Date to get the latest one
|
||||
// the user of that Edit is the updateUser
|
||||
return await lastRevision.edits.sort(
|
||||
return await (
|
||||
await lastRevision.edits.sort(
|
||||
(a, b) => b.updatedAt.getTime() - a.updatedAt.getTime(),
|
||||
)[0].author.user;
|
||||
)[0].author
|
||||
).user;
|
||||
}
|
||||
// If there are no Edits, the owner is the updateUser
|
||||
return await note.owner;
|
||||
|
|
|
@ -28,13 +28,13 @@ export class Edit {
|
|||
* Revisions this edit appears in
|
||||
*/
|
||||
@ManyToMany((_) => Revision, (revision) => revision.edits)
|
||||
revisions: Revision[];
|
||||
revisions: Promise<Revision[]>;
|
||||
|
||||
/**
|
||||
* Author that created the change
|
||||
*/
|
||||
@ManyToOne(() => Author, (author) => author.edits)
|
||||
author: Author;
|
||||
author: Promise<Author>;
|
||||
|
||||
@Column()
|
||||
startPos: number;
|
||||
|
@ -57,8 +57,8 @@ export class Edit {
|
|||
endPos: number,
|
||||
): Omit<Edit, 'id' | 'createdAt' | 'updatedAt'> {
|
||||
const newEdit = new Edit();
|
||||
newEdit.revisions = [];
|
||||
newEdit.author = author;
|
||||
newEdit.revisions = Promise.resolve([]);
|
||||
newEdit.author = Promise.resolve(author);
|
||||
newEdit.startPos = startPos;
|
||||
newEdit.endPos = endPos;
|
||||
return newEdit;
|
||||
|
|
Loading…
Reference in a new issue