hedgedoc/backend/src/revisions/edit.entity.ts
Tilman Vatteroth bf30cbcf48 fix(repository): Move backend code into subdirectory
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
2022-10-30 22:46:42 +01:00

66 lines
1.4 KiB
TypeScript

/*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import {
Column,
CreateDateColumn,
Entity,
ManyToMany,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Author } from '../authors/author.entity';
import { Revision } from './revision.entity';
/**
* The Edit represents a change in the content of a note by a particular {@link Author}
*/
@Entity()
export class Edit {
@PrimaryGeneratedColumn()
id: number;
/**
* Revisions this edit appears in
*/
@ManyToMany((_) => Revision, (revision) => revision.edits)
revisions: Promise<Revision[]>;
/**
* Author that created the change
*/
@ManyToOne(() => Author, (author) => author.edits)
author: Promise<Author>;
@Column()
startPos: number;
@Column()
endPos: number;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
// eslint-disable-next-line @typescript-eslint/no-empty-function
private constructor() {}
public static create(
author: Author,
startPos: number,
endPos: number,
): Omit<Edit, 'id' | 'createdAt' | 'updatedAt'> {
const newEdit = new Edit();
newEdit.revisions = Promise.resolve([]);
newEdit.author = Promise.resolve(author);
newEdit.startPos = startPos;
newEdit.endPos = endPos;
return newEdit;
}
}