Files
dsc-api/src/modules/tickets/entities/ticket.entity.ts
T

43 lines
1.6 KiB
TypeScript
Executable File

import { Column, Entity, ManyToOne, OneToMany } from "typeorm";
import { TicketCategory } from "./ticket-category.entity";
import { TicketMessage } from "./ticket-message.entity";
import { BaseEntity } from "../../../common/entities/base.entity";
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { User } from "../../users/entities/user.entity";
import { TicketPriority } from "../enums/ticket-priority.enum";
import { TicketStatus } from "../enums/ticket-status.enum";
@Entity()
export class Ticket extends BaseEntity {
@Column({ type: "int", generated: "identity", insert: false })
numericId: number;
// @Column({ type: "varchar", length: 150, nullable: false })
// title: string;
@Column({ type: "varchar", length: 150, nullable: false })
subject: string;
@Column({ type: "enum", enum: TicketStatus, default: TicketStatus.PENDING })
status: TicketStatus;
@Column({ type: "enum", enum: TicketPriority, nullable: false })
priority: TicketPriority;
@ManyToOne(() => DanakService, (danakService) => danakService.tickets, { onDelete: "RESTRICT", nullable: true })
danakService: DanakService | null;
@ManyToOne(() => User, (user) => user.tickets, { nullable: true })
assignedTo: User;
@ManyToOne(() => User, (user) => user.tickets, { onDelete: "CASCADE", nullable: false })
user: User;
@ManyToOne(() => TicketCategory, (category) => category.tickets, { onDelete: "RESTRICT", nullable: false })
category: TicketCategory;
@OneToMany(() => TicketMessage, (message) => message.ticket, { cascade: true })
messages: TicketMessage[];
}