AuthorshipEntity: Adjust to DB schema

This commit replaces the user property with a author property,
in accordance with the DB schema updated in 0d6c3002.

It also adjusts the NoteService accordingly.

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2021-05-19 22:12:25 +02:00
parent 27c2bfb36f
commit 20006df82f
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3
3 changed files with 25 additions and 11 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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;
}
}