Update Note entity

We now use the new permissions split in users and groups. Also the note now knows the colors of its authors.

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2020-08-13 20:24:45 +02:00
parent 1121ed9507
commit 67e60a3c37
No known key found for this signature in database
GPG key ID: 6017AF117F9756CB
4 changed files with 47 additions and 71 deletions

View file

@ -6,19 +6,11 @@ import {
OneToMany,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Author } from '../authors/author.entity';
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
import { Revision } from '../revisions/revision.entity';
import { User } from '../users/user.entity';
// permission types
enum PermissionEnum {
freely = 'freely',
editable = 'editable',
limited = 'limited',
locked = 'locked',
protected = 'protected',
private = 'private',
}
import { AuthorColor } from './author-color.entity';
@Entity('Notes')
export class Note {
@ -37,10 +29,17 @@ export class Note {
})
alias: string;
@Column({
type: 'text',
})
permission: PermissionEnum;
@OneToMany(
_ => NoteGroupPermission,
groupPermission => groupPermission.note,
)
groupPermissions: NoteGroupPermission[];
@OneToMany(
_ => NoteUserPermission,
userPermission => userPermission.note,
)
userPermissions: NoteUserPermission[];
@Column({
nullable: false,
@ -48,20 +47,13 @@ export class Note {
})
viewcount: number;
@Column({
nullable: true,
})
lastchangeAt: Date;
@Column()
savedAt: Date;
@ManyToOne(_ => User, { onDelete: 'CASCADE' })
@ManyToOne(
_ => User,
user => user.ownedNotes,
{ onDelete: 'CASCADE' },
)
owner: User;
@ManyToOne(_ => User)
lastchangeuser: User;
@OneToMany(
_ => Revision,
revision => revision.note,
@ -69,39 +61,12 @@ export class Note {
revisions: Revision[];
@OneToMany(
_ => Author,
author => author.note,
_ => AuthorColor,
authorColor => authorColor.note,
)
authors: Author[];
authorColors: AuthorColor[];
@Column({
type: 'text',
nullable: true,
})
title: string;
@Column({
type: 'text',
})
content: string;
@Column({
type: 'text',
nullable: true,
})
authorship: string;
constructor(
shortid: string,
alias: string,
permission: PermissionEnum,
lastchangeAt: Date,
savedAt: Date,
owner: User,
title: string,
content: string,
authorship: string,
) {
constructor(shortid: string, alias: string, owner: User) {
if (shortid) {
this.shortid = shortid;
} else {
@ -109,12 +74,6 @@ export class Note {
this.shortid = shortIdGenerate() as string;
}
this.alias = alias;
this.permission = permission;
this.lastchangeAt = lastchangeAt;
this.savedAt = savedAt;
this.owner = owner;
this.title = title;
this.content = content;
this.authorship = authorship;
}
}

View file

@ -1,12 +1,17 @@
import { Column, ManyToOne } from 'typeorm/index';
import { Column, Entity, ManyToOne } from 'typeorm/index';
import { Group } from '../groups/group.entity';
import { Note } from '../notes/note.entity';
@Entity()
export class NoteGroupPermission {
@ManyToOne(_ => Group)
@ManyToOne(_ => Group, { primary: true })
group: Group;
@ManyToOne(_ => Note)
@ManyToOne(
_ => Note,
note => note.groupPermissions,
{ primary: true },
)
note: Note;
@Column()

View file

@ -1,12 +1,17 @@
import { Column, ManyToOne } from 'typeorm/index';
import { Column, Entity, ManyToOne } from 'typeorm/index';
import { Note } from '../notes/note.entity';
import { User } from '../users/user.entity';
@Entity()
export class NoteUserPermission {
@ManyToOne(_ => User)
@ManyToOne(_ => User, { primary: true })
user: User;
@ManyToOne(_ => Note)
@ManyToOne(
_ => Note,
note => note.userPermissions,
{ primary: true },
)
note: Note;
@Column()

View file

@ -1,4 +1,11 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { NoteGroupPermission } from './note-group-permission.entity';
import { NoteUserPermission } from './note-user-permission.entity';
@Module({})
@Module({
imports: [
TypeOrmModule.forFeature([NoteUserPermission, NoteGroupPermission]),
],
})
export class PermissionsModule {}