81 lines
1.8 KiB
TypeScript
81 lines
1.8 KiB
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
CreateDateColumn,
|
|
UpdateDateColumn,
|
|
ManyToOne,
|
|
JoinColumn,
|
|
Index,
|
|
} from 'typeorm';
|
|
import { Store } from '../../stores/entities/store.entity';
|
|
import { Video } from '../../videos/entities/video.entity';
|
|
|
|
@Entity('inventory_items')
|
|
@Index(['storeId', 'name'])
|
|
@Index(['storeId', 'category'])
|
|
@Index(['storeId', 'barcode'])
|
|
export class InventoryItem {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column({ type: 'uuid' })
|
|
storeId: string;
|
|
|
|
@ManyToOne(() => Store)
|
|
@JoinColumn({ name: 'storeId' })
|
|
store: Store;
|
|
|
|
@Column({ type: 'uuid', nullable: true })
|
|
detectedByVideoId: string;
|
|
|
|
@ManyToOne(() => Video, { nullable: true })
|
|
@JoinColumn({ name: 'detectedByVideoId' })
|
|
detectedByVideo: Video;
|
|
|
|
@Column({ type: 'varchar', length: 255 })
|
|
name: string;
|
|
|
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
|
category: string;
|
|
|
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
|
subcategory: string;
|
|
|
|
@Column({ type: 'varchar', length: 50, nullable: true })
|
|
barcode: string;
|
|
|
|
@Column({ type: 'int', default: 0 })
|
|
quantity: number;
|
|
|
|
@Column({ type: 'int', nullable: true })
|
|
minStock: number;
|
|
|
|
@Column({ type: 'decimal', precision: 10, scale: 2, nullable: true })
|
|
price: number;
|
|
|
|
@Column({ type: 'decimal', precision: 10, scale: 2, nullable: true })
|
|
cost: number;
|
|
|
|
@Column({ type: 'varchar', length: 500, nullable: true })
|
|
imageUrl: string;
|
|
|
|
@Column({ type: 'decimal', precision: 5, scale: 2, nullable: true })
|
|
detectionConfidence: number;
|
|
|
|
@Column({ type: 'boolean', default: false })
|
|
isManuallyEdited: boolean;
|
|
|
|
@Column({ type: 'jsonb', nullable: true })
|
|
metadata: Record<string, unknown>;
|
|
|
|
@Column({ type: 'timestamp', nullable: true })
|
|
lastCountedAt: Date;
|
|
|
|
@CreateDateColumn()
|
|
createdAt: Date;
|
|
|
|
@UpdateDateColumn()
|
|
updatedAt: Date;
|
|
}
|