feat: add relationships between user, notif, organ

This commit is contained in:
2026-07-31 23:58:47 +03:30
parent b4e5fd4e7e
commit 78b82e05b5
6 changed files with 46 additions and 4 deletions
@@ -0,0 +1,18 @@
import { BaseEntity } from "src/common/entities/base.entity";
import { Organ } from "src/modules/organ/entities/organ.entity";
import { User } from "src/modules/users/entities/user.entity";
import { Column, Entity, ManyToOne } from "typeorm";
@Entity('notifications')
export class AppNotification extends BaseEntity {
@Column({
type: 'boolean'
})
isRead: boolean;
@ManyToOne(() => User, (user) => user.notifications)
receiver: User;
@ManyToOne(() => Organ, (organ) => organ.sentNotifications)
senderOrgan: Organ;
}
@@ -0,0 +1,4 @@
import { Controller } from "@nestjs/common";
@Controller('notification')
export class NotificationController {}
@@ -6,6 +6,8 @@ import { SmsProcessor } from './processors/sms.processor';
import { SMS_CONFIG, SMS_QUEUE } from './constants';
import { smsConfigsProvider } from 'src/config/sms.config';
import { HttpModule } from '@nestjs/axios';
import { NotificationController } from './notification.controller';
import { NotificationService } from './providers/notification.service';
@Module({
imports: [
@@ -14,10 +16,16 @@ import { HttpModule } from '@nestjs/axios';
name: SMS_QUEUE,
}),
],
providers: [SmsService, smsConfigsProvider, SmsProducer, SmsProcessor],
exports: [SmsProducer, SMS_CONFIG],
controllers: [NotificationController],
providers: [
SmsService,
smsConfigsProvider,
SmsProducer,
SmsProcessor,
NotificationService,
],
exports: [SmsProducer, SMS_CONFIG, NotificationService],
})
export class NotificationModule {}
export { SMS_QUEUE };
@@ -0,0 +1,4 @@
import { Injectable } from "@nestjs/common";
@Injectable()
export class NotificationService {}
@@ -1,5 +1,6 @@
import { BaseEntity } from 'src/common/entities/base.entity';
import { Complaint } from 'src/modules/complaint/entities/complaint.entity';
import { AppNotification } from 'src/modules/notifications/entities/notification.entity';
import { Column, Entity, OneToMany } from 'typeorm';
@Entity('organs')
@@ -17,4 +18,7 @@ export class Organ extends BaseEntity {
@OneToMany(() => Complaint, (complaint) => complaint.organ)
complaints: Complaint[];
@OneToMany(() => AppNotification, (notif) => notif.senderOrgan)
sentNotifications: AppNotification;
}
+5 -1
View File
@@ -1,8 +1,9 @@
import { Entity, Column, ManyToMany, JoinTable, OneToMany } from 'typeorm';
import { Entity, Column, OneToMany } from 'typeorm';
import { BaseEntity } from 'src/common/entities/base.entity';
import { Exclude } from 'class-transformer';
import { UserRole } from './user-role.entity';
import { Complaint } from 'src/modules/complaint/entities/complaint.entity';
import { AppNotification } from 'src/modules/notifications/entities/notification.entity';
@Entity('users')
export class User extends BaseEntity {
@@ -39,4 +40,7 @@ export class User extends BaseEntity {
cascade: true
})
complaints: Complaint[];
@OneToMany(() => AppNotification, (notif) => notif.receiver)
notifications: AppNotification[];
}