chore: add ticket module and tickets entity

This commit is contained in:
mahyargdz
2025-01-22 17:03:46 +03:30
parent c48ec70638
commit e3762c1eba
16 changed files with 166 additions and 27 deletions
@@ -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",
}
+9 -4
View File
@@ -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 {}