diff --git a/src/notes/notes.service.spec.ts b/src/notes/notes.service.spec.ts index 230536857..5bec3fc6c 100644 --- a/src/notes/notes.service.spec.ts +++ b/src/notes/notes.service.spec.ts @@ -655,7 +655,8 @@ describe('NotesService', () => { describe('toNoteMetadataDto', () => { it('works', async () => { const user = User.create('hardcoded', 'Testy') as User; - const otherUser = User.create('other hardcoded', 'Testy2') as User; + const author = Author.create(1); + author.user = user; const group = Group.create('testGroup', 'testGroup'); const content = 'testContent'; jest @@ -665,18 +666,18 @@ describe('NotesService', () => { const revisions = await note.revisions; revisions[0].authorships = [ { - user: otherUser, revisions: revisions, startPos: 0, endPos: 1, updatedAt: new Date(1549312452000), + author: author, } as Authorship, { - user: user, revisions: revisions, startPos: 0, endPos: 1, updatedAt: new Date(1549312452001), + author: author, } as Authorship, ]; revisions[0].createdAt = new Date(1549312452000); @@ -738,6 +739,8 @@ describe('NotesService', () => { describe('toNoteDto', () => { it('works', async () => { const user = User.create('hardcoded', 'Testy') as User; + const author = Author.create(1); + author.user = user; const otherUser = User.create('other hardcoded', 'Testy2') as User; otherUser.userName = 'other hardcoded user'; const group = Group.create('testGroup', 'testGroup'); @@ -749,18 +752,18 @@ describe('NotesService', () => { const revisions = await note.revisions; revisions[0].authorships = [ { - user: otherUser, revisions: revisions, startPos: 0, endPos: 1, updatedAt: new Date(1549312452000), + author: author, } as Authorship, { - user: user, revisions: revisions, startPos: 0, endPos: 1, updatedAt: new Date(1549312452001), + author: author, } as Authorship, ]; revisions[0].createdAt = new Date(1549312452000); diff --git a/src/notes/notes.service.ts b/src/notes/notes.service.ts index b2df08354..b5a34cc7b 100644 --- a/src/notes/notes.service.ts +++ b/src/notes/notes.service.ts @@ -310,7 +310,7 @@ export class NotesService { // the user of that Authorship is the updateUser return lastRevision.authorships.sort( (a, b) => b.updatedAt.getTime() - a.updatedAt.getTime(), - )[0].user; + )[0].author.user; } // If there are no Authorships, the owner is the updateUser return note.owner; diff --git a/src/revisions/authorship.entity.ts b/src/revisions/authorship.entity.ts index 24eaa084e..b2b50e28f 100644 --- a/src/revisions/authorship.entity.ts +++ b/src/revisions/authorship.entity.ts @@ -13,11 +13,11 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { User } from '../users/user.entity'; +import { Author } from '../authors/author.entity'; import { Revision } from './revision.entity'; /** - * This class stores which parts of a revision were edited by a particular user. + * The Authorship represents a change in the content of a note by a particular {@link Author} */ @Entity() export class Authorship { @@ -31,10 +31,10 @@ export class Authorship { revisions: Revision[]; /** - * User this authorship represents + * Author that created the change */ - @ManyToOne((_) => User) - user: User; + @ManyToOne(() => Author, (author) => author.authorships) + author: Author; @Column() startPos: number; @@ -47,4 +47,15 @@ export class Authorship { @UpdateDateColumn() updatedAt: Date; + + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + public static create(author: Author, startPos: number, endPos: number) { + const newAuthorship = new Authorship(); + newAuthorship.author = author; + newAuthorship.startPos = startPos; + newAuthorship.endPos = endPos; + return newAuthorship; + } }