import { IsEnum, IsInt, IsNotEmpty, IsOptional, IsString } from "class-validator"; import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; import { PermissionAction } from '../enums/PermissionAction'; import { User } from './User'; /** * Defines the UserAction entity. * Will later be used to document a user's actions. */ @Entity() export class UserAction { /** * Autogenerated unique id (primary key). */ @PrimaryGeneratedColumn() @IsInt() id: number; /** * The user that performed the action. */ @ManyToOne(() => User, user => user.actions) user: User /** * The actions's target (e.g. Track#2) */ @Column() @IsNotEmpty() @IsString() target: string; /** * The actions's action (e.g. UPDATE). * Directly pulled from the PermissionAction Enum. */ @Column({ type: 'varchar' }) @IsEnum(PermissionAction) action: PermissionAction; /** * The description of the change (before-> after; e.g. distance:15->17). * Will later be defined in more detail. */ @Column({ nullable: true }) @IsOptional() @IsString() changed: string; /** * Turns this entity into it's response class. */ public toResponse() { return new Error("NotImplemented"); } }