import { ApiProperty } from '@nestjs/swagger'; import { IsEnum, IsNotEmpty, IsString } from 'class-validator'; import { AssetOrder } from 'src/enum'; import { TimeBucketSize } from 'src/interfaces/asset.interface'; import { Optional, ValidateBoolean, ValidateUUID } from 'src/validation'; export class TimeBucketDto { @IsNotEmpty() @IsEnum(TimeBucketSize) @ApiProperty({ enum: TimeBucketSize, enumName: 'TimeBucketSize' }) size!: TimeBucketSize; @ValidateUUID({ optional: true }) userId?: string; @ValidateUUID({ optional: true }) albumId?: string; @ValidateUUID({ optional: true }) personId?: string; @ValidateBoolean({ optional: true }) isArchived?: boolean; @ValidateBoolean({ optional: true }) isFavorite?: boolean; @ValidateBoolean({ optional: true }) isTrashed?: boolean; @ValidateBoolean({ optional: true }) withStacked?: boolean; @ValidateBoolean({ optional: true }) withPartners?: boolean; @IsEnum(AssetOrder) @Optional() @ApiProperty({ enum: AssetOrder, enumName: 'AssetOrder' }) order?: AssetOrder; } export class TimeBucketAssetDto extends TimeBucketDto { @IsString() timeBucket!: string; } export class TimeBucketResponseDto { @ApiProperty({ type: 'string' }) timeBucket!: string; @ApiProperty({ type: 'integer' }) count!: number; }