import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, Check } from 'typeorm'; import { License } from './license.entity'; import { StoreCategory } from './store-category.entity'; @Entity('store_items') @Check(`"item_type" IN ('kit', 'rank', 'currency', 'command')`) export class StoreItem { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'uuid' }) license_id: string; @Column({ type: 'uuid', nullable: true }) category_id: string | null; @Column({ type: 'varchar', length: 200 }) name: string; @Column({ type: 'text', nullable: true }) description: string | null; @Column({ type: 'decimal', precision: 10, scale: 2 }) price: number; @Column({ type: 'text', nullable: true }) image_url: string | null; @Column({ type: 'varchar', length: 50 }) item_type: string; @Column({ type: 'jsonb' }) delivery_commands: Record; @Column({ type: 'integer', nullable: true }) limit_per_player: number | null; @Column({ type: 'boolean', default: true }) enabled: boolean; @Column({ type: 'timestamptz', default: () => 'NOW()' }) created_at: Date; @Column({ type: 'timestamptz', default: () => 'NOW()' }) updated_at: Date; @ManyToOne(() => License, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'license_id' }) license: License; @ManyToOne(() => StoreCategory, { onDelete: 'SET NULL', nullable: true }) @JoinColumn({ name: 'category_id' }) category: StoreCategory | null; }