import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, } from 'typeorm'; export enum TemplateGiro { ABARROTES = 'abarrotes', PAPELERIA = 'papeleria', FARMACIA = 'farmacia', FERRETERIA = 'ferreteria', GENERAL = 'general', } export enum TemplateProvider { SABRITAS = 'sabritas', COCA_COLA = 'coca-cola', BIMBO = 'bimbo', MARINELA = 'marinela', GAMESA = 'gamesa', PEPSI = 'pepsi', NESTLE = 'nestle', GENERIC = 'generic', } @Entity({ schema: 'catalog', name: 'product_templates' }) @Index(['provider', 'giro']) @Index(['barcode']) export class ProductTemplate { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'enum', enum: TemplateProvider }) provider: TemplateProvider; @Column({ type: 'enum', enum: TemplateGiro }) giro: TemplateGiro; @Column({ length: 50, nullable: true }) category: string; @Column({ length: 50 }) sku: string; @Column({ length: 150 }) name: string; @Column({ type: 'text', nullable: true }) description: string; @Column({ length: 50, nullable: true }) barcode: string; @Column({ name: 'suggested_price', type: 'decimal', precision: 10, scale: 2 }) suggestedPrice: number; @Column({ name: 'cost_price', type: 'decimal', precision: 10, scale: 2, nullable: true }) costPrice: number; @Column({ name: 'image_url', type: 'text', nullable: true }) imageUrl: string; @Column({ length: 20, default: 'pieza' }) unit: string; @Column({ type: 'jsonb', nullable: true }) metadata: Record; @Column({ default: true }) active: boolean; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; }