From 823d43fc75bcd41f5efd2bbf3016306c25ec8665 Mon Sep 17 00:00:00 2001 From: realrafi Date: Tue, 28 Jul 2026 17:19:57 +0330 Subject: [PATCH] feat: added complaintAttachment entity --- src/attachment/entities/attachment.entity.ts | 6 +++++- src/complaint/complaint.module.ts | 3 ++- .../entities/complaint-attachment.entity.ts | 18 ++++++++++++++++++ src/complaint/entities/complaint.entity.ts | 6 +++++- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/complaint/entities/complaint-attachment.entity.ts diff --git a/src/attachment/entities/attachment.entity.ts b/src/attachment/entities/attachment.entity.ts index 371d0d3..7df7e46 100644 --- a/src/attachment/entities/attachment.entity.ts +++ b/src/attachment/entities/attachment.entity.ts @@ -1,6 +1,7 @@ import { BaseEntity } from "src/common/entities/base.entity"; -import { Column, Entity } from "typeorm"; +import { Column, Entity, OneToOne } from "typeorm"; import { AttachmentType } from "../enums/attachment-type.enum"; +import { ComplaintAttachment } from "src/complaint/entities/complaint-attachment.entity"; @Entity('attachments') export class Attachment extends BaseEntity{ @@ -20,4 +21,7 @@ export class Attachment extends BaseEntity{ type: 'text' }) filepath: string; + + @OneToOne(() => ComplaintAttachment, (ca) => ca.attachment) + complaint: ComplaintAttachment; } diff --git a/src/complaint/complaint.module.ts b/src/complaint/complaint.module.ts index 36403b9..68696ce 100644 --- a/src/complaint/complaint.module.ts +++ b/src/complaint/complaint.module.ts @@ -4,9 +4,10 @@ import { ComplaintController } from './complaint.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Complaint } from './entities/complaint.entity'; import { ComplaintRepository } from './repositories/complaint.repository'; +import { ComplaintAttachment } from './entities/complaint-attachment.entity'; @Module({ - imports: [TypeOrmModule.forFeature([Complaint])], + imports: [TypeOrmModule.forFeature([Complaint, ComplaintAttachment])], controllers: [ComplaintController], providers: [ComplaintService, ComplaintRepository], }) diff --git a/src/complaint/entities/complaint-attachment.entity.ts b/src/complaint/entities/complaint-attachment.entity.ts new file mode 100644 index 0000000..603dfc5 --- /dev/null +++ b/src/complaint/entities/complaint-attachment.entity.ts @@ -0,0 +1,18 @@ +import { BaseEntity } from "src/common/entities/base.entity"; +import { Entity, JoinColumn, ManyToOne, OneToOne, Unique } from "typeorm"; +import { Complaint } from "./complaint.entity"; +import { Attachment } from "src/attachment/entities/attachment.entity"; + +@Entity('complaint_attachments') +@Unique(['attachment']) +export class ComplaintAttachment extends BaseEntity { + @ManyToOne(() => Complaint, (complaint) => complaint.attachments) + complaint: Complaint; + + @OneToOne(() => Attachment, (a) => a.complaint, { + cascade: true, + onDelete: 'CASCADE' + }) + @JoinColumn() + attachment: Attachment; +} \ No newline at end of file diff --git a/src/complaint/entities/complaint.entity.ts b/src/complaint/entities/complaint.entity.ts index 5c6bff9..8ca0315 100644 --- a/src/complaint/entities/complaint.entity.ts +++ b/src/complaint/entities/complaint.entity.ts @@ -1,8 +1,9 @@ -import { Column, Entity, JoinColumn, ManyToOne, OneToOne } from 'typeorm'; +import { Column, Entity, JoinColumn, ManyToOne, OneToMany, OneToOne } from 'typeorm'; import { ComplaintStatus } from '../enums/complaint.enum'; import { User } from 'src/users/entities/user.entity'; import { Organ } from 'src/organ/entities/organ.entity'; import { BaseEntity } from 'src/common/entities/base.entity'; +import { ComplaintAttachment } from './complaint-attachment.entity'; @Entity('complaints') export class Complaint extends BaseEntity { @@ -41,4 +42,7 @@ export class Complaint extends BaseEntity { name: 'organId' }) organ: Organ; + + @OneToMany(() => ComplaintAttachment, (ca) => ca.complaint) + attachments: ComplaintAttachment[]; }