import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, } from "typeorm"; import { Partner } from "./Partner"; import { Master } from "./Master"; @Entity("partner_notification", { comment: "Tabla creada para almacenar las notificaciones del usuario.", }) export class PartnerNotification { @PrimaryGeneratedColumn({ type: "int", comment: "ID único para cada notificación", }) id: number; @ManyToOne(() => Partner, (partner) => partner.partners_notification, { onDelete: "CASCADE", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "partner" }) partner: Partner | null; @ManyToOne(() => Master, (master) => master.masters_notification, { onDelete: "CASCADE", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "master" }) master: Master | null; @Column({ length: 200, type: "varchar", comment: "Nombre de la notificación.", }) name: string; @Column({ length: 400, type: "varchar", nullable: true, default: null, comment: "Descripción de la notificación.", }) description: string | null; @Column({ type: "json", nullable: true, default: null, comment: "Configuración adicional de la notificación, como enlaces, qué hace después de darle click...", }) settings: any | null; @Column({ default: 1, type: "int", width: 1, comment: "Estado del registro, es decir:\r\n1. Activo: Es visible en la plataforma.\r\n0. Inactivo: No será visible en la plataforma.", }) status: number; @Column({ type: "datetime", comment: "Fecha de creación de la notificación.", default: () => "CURRENT_TIMESTAMP", }) created: Date; @ManyToMany(() => Partner, (partner) => partner.partners_to_notification) @JoinTable({ name: "partner_to_notification", joinColumn: { name: "partner_notification", referencedColumnName: "id", }, inverseJoinColumn: { name: "partner", referencedColumnName: "id", }, }) partner_to_notifications: Partner[]; }