snowballtools-base/packages/backend/src/entity/ProjectMember.ts

52 lines
944 B
TypeScript

import {
Entity,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
PrimaryGeneratedColumn,
JoinColumn,
Unique,
DeleteDateColumn
} from 'typeorm';
import { Project } from './Project';
import { User } from './User';
export enum Permission {
View = 'View',
Edit = 'Edit',
}
@Entity()
@Unique(['project', 'member'])
export class ProjectMember {
@PrimaryGeneratedColumn('uuid')
id!: string;
@ManyToOne(() => User, (user) => user.projectMembers)
@JoinColumn({ name: 'userId' })
member!: User;
@ManyToOne(() => Project, (project) => project.projectMembers)
@JoinColumn({ name: 'projectId' })
project!: Project;
@Column({
type: 'simple-array'
})
permissions!: Permission[];
@Column('boolean', { default: false })
isPending!: boolean;
@CreateDateColumn()
createdAt!: Date;
@UpdateDateColumn()
updatedAt!: Date;
@DeleteDateColumn()
deletedAt!: Date | null;
}