Files
dsc-api/src/modules/task-manager/entities/project.entity.ts
T

55 lines
1.5 KiB
TypeScript

import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany } from "typeorm";
import { BaseEntity } from "../../../common/entities/base.entity";
import { TMWorkspace } from "./workspace.entity";
import { TMTaskPhase } from "./task-phase.entity";
import { User } from "../../users/entities/user.entity";
@Entity("tm_projects")
export class TMProject extends BaseEntity {
@Column({ type: "varchar", length: 150 })
name: string;
@Column({ type: "varchar", length: 150, nullable: true })
ownerName: string;
@Column({ type: "text", nullable: true })
description: string;
@Column({ type: "timestamptz", nullable: true })
startDate: Date;
@Column({ type: "text", nullable: true })
backgroundPicture: string;
@Column({ type: "varchar", length: 20, nullable: true })
backgroundColor: string;
@Column({ type: "boolean", default: true })
isActive: boolean;
// --- Relations ---
@ManyToOne(() => TMWorkspace, (workspace) => workspace.projects, {
nullable: false,
onDelete: "RESTRICT",
})
@JoinColumn({ name: "workspaceId" })
workspace: TMWorkspace;
@Column({ type: "uuid" })
workspaceId: string;
@OneToMany(() => TMTaskPhase, (taskPhase) => taskPhase.project, {
cascade: ["insert", "update"],
})
taskPhases: TMTaskPhase[];
@ManyToMany(() => User, (user) => user.projects)
@JoinTable({
name: "tm_project_users",
joinColumn: { name: "projectId", referencedColumnName: "id" },
inverseJoinColumn: { name: "userId", referencedColumnName: "id" },
})
users: User[];
}