homemanager-be/src/app-storage/dto/storage-item-response.dto.ts

67 lines
1.9 KiB
TypeScript

import { ApiProperty, OmitType, PickType } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { StoredItemTransaction } from 'src/objects/storage/entities/item-transaction.entity';
import { Item } from 'src/objects/storage/entities/item.entity';
import { StoredItem } from 'src/objects/storage/entities/stored-item.entity';
import { StorageActorResponse } from './storage-response.dto';
export class StorageItemResponseDto extends OmitType(Item, [
'instances',
'addedBy',
]) {
@ApiProperty({ type: StorageActorResponse })
addedBy: StorageActorResponse;
}
export class StorageItemSearchResponseDto extends PickType(Item, [
'id',
'displayName',
'type',
'barcode',
'image',
'createdAt',
]) {}
export class StorageTransactionResponseDto extends OmitType(
StoredItemTransaction,
['storedItem', 'actor'],
) {}
export class StorageTransactionWithActorResponseDto extends StorageTransactionResponseDto {
@ApiProperty({ type: StorageActorResponse })
actor: StorageActorResponse;
}
export class StorageStoredItemResponseDto extends OmitType(StoredItem, [
'addedBy',
'transactions',
'storage',
'building',
'item',
]) {
@ApiProperty({ type: StorageActorResponse })
addedBy: StorageActorResponse;
@ApiProperty({ type: StorageItemResponseDto })
@Type(() => StorageItemResponseDto)
item: StorageItemResponseDto;
@ApiProperty({ type: StorageTransactionResponseDto, isArray: true })
@Type(() => StorageTransactionResponseDto)
transactions: StorageTransactionResponseDto[];
constructor(obj: Partial<StorageStoredItemResponseDto>) {
super(obj);
Object.assign(this, obj);
}
}
export class StorageStoredItemTransactionDto extends OmitType(
StoredItemTransaction,
['storedItem'],
) {
@ApiProperty({ type: StorageStoredItemResponseDto })
@Type(() => StorageStoredItemResponseDto)
storedItem: StorageStoredItemResponseDto;
}