import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Room } from 'src/objects/building/entities/room.entity'; import { User } from 'src/objects/user/user.entity'; import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { StorageType } from '../enums/storage-type.enum'; import { StorageSet } from './storage-set.entity'; import { StoredItem } from './stored-item.entity'; @Entity() export class Storage { @ApiProperty() @PrimaryGeneratedColumn() id: number; @ApiProperty() @Column() displayName: string; @ApiProperty({ type: () => Room }) @ManyToOne(() => Room, { onDelete: 'CASCADE', onUpdate: 'CASCADE', }) room: Room; @ApiProperty({ type: String, enum: StorageType }) @Column({ type: String }) type: StorageType; @ApiProperty() @Column() location: string; @ApiPropertyOptional() @Column({ nullable: true }) locationDescription?: string; @ApiProperty({ type: () => StoredItem, isArray: true }) @OneToMany(() => StoredItem, (item) => item.storage) items: StoredItem[]; @ApiProperty({ type: () => StorageSet }) @ManyToOne(() => StorageSet, { nullable: true, onDelete: 'SET NULL', onUpdate: 'CASCADE', }) set?: StorageSet; @ApiProperty() @Column() color: string; @ApiProperty({ type: () => User }) @ManyToOne(() => User, { onDelete: 'SET NULL', nullable: true, }) addedBy: User; @ApiProperty() @CreateDateColumn() createdAt: Date; @ApiProperty() @UpdateDateColumn() updatedAt: Date; }