import { Column, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { Product } from "./Product"; import { ProductTopping } from "./ProductTopping"; import { ProductGroupComplement } from "./productGroupComplement"; @Entity("product_group", { comment: "Grupos para agregar al topping por producto.\r\n\r\nEstos elementos que se agreguen acá estarán visibles para los usuarios en la APP.", }) export class ProductGroup { @PrimaryGeneratedColumn({ type: "int", comment: "Número de identificación (ID) único de cada registro.", }) id: number; @ManyToOne(() => Product, (product) => product.product_groups, { onDelete: "CASCADE", onUpdate: "NO ACTION", }) @JoinColumn({ name: "product" }) product: Product; @ManyToOne( () => ProductTopping, (productTopping) => productTopping.product_groups, { onDelete: "CASCADE", onUpdate: "NO ACTION", } ) @JoinColumn({ name: "topping" }) topping: ProductTopping; @Column({ length: 30, type: "varchar", comment: "Nombre del grupo." }) name: string; @Column({ default: 1, type: "int", width: 1, comment: "El `type` se refiere a si el grupo es opcional o si es requerido:\r\n1. Opcional.\r\n2. Requerido.", }) type: number; @Column({ default: 0, type: "int", width: 1, comment: "Cantidad mínima que el usuario puede agregar para el grupo.\r\n\r\n- Cuando `type` es `Requerido (2)` entonces la cantidad mínima debería ser 1.\r\n\r\n- Cuando `type` es `Opcional (1)` entonces la cantidad puede ser 0.", }) minimum_quantity: number; @Column({ default: 0, type: "int", width: 1, comment: "Cantidad máxima que el usuario puede agregar para el grupo.", }) maximum_quantity: number; @Column({ type: "int", comment: "El orden en que aparece los grupos en el producto.", }) position: number; @OneToMany( () => ProductGroupComplement, (productGroupComplement) => productGroupComplement.group_id ) groups_complement: ProductGroupComplement[]; }