import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { LocalDecorationReserve, LocalReserveStatus, LocalTable, LocalTableReservePayment, Partner, User, } from ".."; @Entity({ comment: "Reservas de mesas del local.", name: "local_reserve", }) export class LocalReserve { @PrimaryGeneratedColumn({ type: "int", comment: "Id único de cada registro.", }) id: number; @Column({ length: 10, type: "varchar", unique: true, comment: "Código único del registro.\r\nEste elemento nos sirve como identificador si se llega a necesitar.", }) code: string; @Column({ type: "varchar", length: 14, nullable: true, default: null, comment: "Documento del usuario qué hace la reserva.", }) user_document: string | null; @Column({ type: "varchar", length: 100, comment: "Nombre del usuario/cliente qué aparta.", }) user_name: string; @Column({ type: "varchar", length: 14, nullable: true, default: null, comment: "Número de celular del usuario/cliente si es necesario, para recordarle.", }) user_phone: string | null; @Column({ type: "varchar", length: 100, nullable: true, default: null, comment: "Correo electrónico del usuario/cliente qué aparta, si es necesario, para recordarle.", }) user_email: string | null; @ManyToOne(() => User, (user) => user.local_reserves, { onDelete: "SET NULL", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "user" }) user: User | null; @Column({ type: "date", comment: "Fecha de la reserva.", }) date: string; @Column({ type: "varchar", length: 5, comment: "Hora de inicio de la reserva.", }) start_time: string; @Column({ type: "varchar", length: 5, comment: "Hora finalización de la reserva.", }) end_time: string; @Column({ type: "varchar", length: 400, nullable: true, default: null, comment: "Hora finalización de la reserva.", }) details: string | null; @ManyToOne( () => LocalDecorationReserve, (localDecorationReserve) => localDecorationReserve.local_reserves, { onDelete: "SET NULL", onUpdate: "NO ACTION", }, ) @JoinColumn({ name: "decoration" }) decoration: LocalDecorationReserve; @Column({ default: 1, type: "int", comment: "Cantidad de personas que van a estar en la reserva.", }) persons: number; @Column({ type: "datetime", comment: "Fecha creación del registro.", default: () => "CURRENT_TIMESTAMP", }) created: Date; @Column({ type: "datetime", nullable: true, default: null, comment: "Fecha de actualización del registro.", onUpdate: "CURRENT_TIMESTAMP", }) updated: Date | null; @ManyToOne(() => Partner, (partner) => partner.local_reserves, { onDelete: "SET NULL", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "partner" }) partner: Partner | null; @ManyToOne( () => LocalReserveStatus, (localReserveStatus) => localReserveStatus.local_reserves, { onDelete: "RESTRICT", onUpdate: "NO ACTION", }, ) @JoinColumn({ name: "status" }) status: LocalReserveStatus; @ManyToMany( () => LocalTable, (localTable) => localTable.local_tables_reserves, ) @JoinTable({ name: "local_table_reserve", joinColumn: { name: "local_reserve", referencedColumnName: "id", }, inverseJoinColumn: { name: "local_table", referencedColumnName: "id", }, }) local_tables_reserves: LocalTable[]; @OneToMany( () => LocalTableReservePayment, (localTableReservePayment) => localTableReservePayment.local_reserve, ) local_reserve_payments: LocalTableReservePayment[]; }