import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryColumn, } from "typeorm"; import { City } from "./City"; import { Local } from "./Local"; import { User } from "./User"; @Entity({ comment: "Centros comerciales registrados/agregados a la plataforma.\r\n\r\nDel centro comercial es importante saber si tiene una plazoleta de comida.", }) export class Square { @PrimaryColumn({ type: "int", comment: "Número de identificación (ID) único de cada registro.", }) id: number; @Column({ length: 50, type: "varchar", comment: "Nombre del centro comercial/plazoleta.", }) name: string; @ManyToOne(() => City, (city) => city.squares, { onDelete: "RESTRICT", onUpdate: "NO ACTION", }) @JoinColumn({ name: "city" }) city: City; @Column({ length: 100, type: "varchar", comment: "Dirección del centro comercial/plazoleta.", }) address: string; @Column({ type: "decimal", precision: 10, scale: 8, nullable: true, default: null, comment: "Latitud de la plazoleta.", }) latitude: number; @Column({ type: "decimal", precision: 10, scale: 8, nullable: true, default: null, comment: "Longitud de la plazoleta.", }) longitude: number; @Column({ type: "json", nullable: true, default: null, comment: "Campo de tipo JSON por si se llega a necesitar agregar otras columnas para las plazoletas de los centros comerciales.", }) details: any | null; @Column({ type: "int", comment: "Cantidad máxima de locales para ese del centro comercial/plazoleta.", }) maximum_number_locals: number; @Column({ type: "varchar", length: 50, nullable: true, default: null, comment: "Correo electrónico del centro comercial/plazoleta.", }) email: string | null; @Column({ type: "varchar", length: 15, nullable: true, default: null, comment: "Número de celular del centro comercial/plazoleta.", }) phone: string | null; @Column({ type: "int", width: 1, default: 1, comment: "Si la plazoleta está o no activa:\r\n1. Activa.\r\n0. Inactiva.", }) status: number; @OneToMany(() => Local, (local) => local.square) locals: Local[]; @ManyToMany(() => User, (user) => user.user_favorite_squares) @JoinTable({ name: "user_favorite_square", joinColumn: { name: "square", referencedColumnName: "id", }, inverseJoinColumn: { name: "user", referencedColumnName: "id", }, }) users_favorite_square: User[]; }