import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { User } from 'src/objects/user/user.entity'; import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { ItemType } from '../enums/item-type.enum'; import { StoredItem } from './stored-item.entity'; @Entity() export class Item { @ApiProperty() @PrimaryGeneratedColumn() id: number; @ApiProperty() @Column() displayName: string; @ApiProperty({ type: String, enum: ItemType }) @Column({ type: String, default: ItemType.ITEM }) type: ItemType; @ApiPropertyOptional() @Column({ nullable: true }) barcode?: string; @ApiPropertyOptional() @Column({ nullable: true }) sku?: string; @ApiPropertyOptional() @Column({ default: false }) consumable: boolean; @ApiPropertyOptional() @Column({ nullable: true }) image?: string; @ApiPropertyOptional() @Column({ nullable: true }) weight?: number; @ApiPropertyOptional() @Column({ nullable: true }) url?: string; @ApiPropertyOptional() @Column({ nullable: true }) notes?: string; @ApiPropertyOptional({ type: () => StoredItem, isArray: true }) @OneToMany(() => StoredItem, (store) => store.item) instances?: StoredItem[]; @ApiProperty({ type: () => User }) @ManyToOne(() => User, { onDelete: 'SET NULL', nullable: true, }) addedBy: User; @ApiProperty() @Column({ default: false }) public: boolean; @ApiProperty() @CreateDateColumn() createdAt: Date; @ApiProperty() @UpdateDateColumn() updatedAt: Date; }