chore: add ticket module and tickets entity
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
import { Column, Entity, OneToMany } from "typeorm";
|
||||
|
||||
import { Ticket } from "./ticket.entity";
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
|
||||
@Entity()
|
||||
export class TicketCategory extends BaseEntity {
|
||||
@Column({ type: "varchar", length: 150, nullable: false, unique: true })
|
||||
name: string;
|
||||
|
||||
@Column({ type: "text", nullable: true })
|
||||
description: string;
|
||||
|
||||
@OneToMany(() => Ticket, (ticket) => ticket.category)
|
||||
tickets: Ticket[];
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { Column, Entity, JoinColumn, ManyToOne } from "typeorm";
|
||||
|
||||
import { TicketCategory } from "./ticket-category.entity";
|
||||
import { BaseEntity } from "../../../common/entities/base.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: "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;
|
||||
|
||||
//TODO:ADD service reference here
|
||||
|
||||
@JoinColumn()
|
||||
@ManyToOne(() => User, (user) => user.tickets, { nullable: true })
|
||||
assignedTo: User;
|
||||
|
||||
@JoinColumn()
|
||||
@ManyToOne(() => User, (user) => user.tickets, { onDelete: "CASCADE", nullable: false })
|
||||
user: User;
|
||||
|
||||
@JoinColumn()
|
||||
@ManyToOne(() => TicketCategory, (category) => category.tickets, { onDelete: "RESTRICT", nullable: false })
|
||||
category: TicketCategory;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
export enum TicketPriority {
|
||||
LOW = "LOW",
|
||||
MEDIUM = "MEDIUM",
|
||||
HIGH = "HIGH",
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
export enum TicketStatus {
|
||||
PENDING = "PENDING",
|
||||
ANSWERED = "ANSWERED",
|
||||
CLOSED = "CLOSED",
|
||||
}
|
||||
@@ -1,9 +1,14 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TicketsService } from './tickets.service';
|
||||
import { TicketsController } from './tickets.controller';
|
||||
import { Module } from "@nestjs/common";
|
||||
import { TypeOrmModule } from "@nestjs/typeorm";
|
||||
|
||||
import { TicketCategory } from "./entities/ticket-category.entity";
|
||||
import { Ticket } from "./entities/ticket.entity";
|
||||
import { TicketsController } from "./tickets.controller";
|
||||
import { TicketsService } from "./tickets.service";
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Ticket, TicketCategory])],
|
||||
providers: [TicketsService],
|
||||
controllers: [TicketsController]
|
||||
controllers: [TicketsController],
|
||||
})
|
||||
export class TicketsModule {}
|
||||
|
||||
Reference in New Issue
Block a user