Files
mp-pilates/packages/server/src/studio/dto/update-studio.dto.ts
2026-10-25 15:21:27 +08:00

73 lines
1.2 KiB
TypeScript

import {
IsArray,
IsNumber,
IsOptional,
IsString,
ArrayMaxSize,
MaxLength,
ValidateIf,
Max,
Min,
} from 'class-validator'
import {
OWNER_INTRODUCTION_MAX_LENGTH,
OWNER_CERTIFICATIONS_MAX_COUNT,
OWNER_CERTIFICATION_MAX_LENGTH,
} from '@mp-pilates/shared'
export class UpdateStudioDto {
@IsOptional()
@IsString()
name?: string
@IsOptional()
@IsString()
logo?: string
@IsOptional()
@IsString()
bannerUrl?: string
@IsOptional()
@IsString()
address?: string
@IsOptional()
@IsString()
phone?: string
@IsOptional()
@IsNumber()
@Min(-90)
@Max(90)
latitude?: number
@IsOptional()
@IsNumber()
@Min(-180)
@Max(180)
longitude?: number
@IsOptional()
@IsNumber()
@Min(0)
cancelHoursLimit?: number
@IsOptional()
@IsArray()
@IsString({ each: true })
photos?: string[]
@ValidateIf((_object, value) => value !== undefined)
@IsString()
@MaxLength(OWNER_INTRODUCTION_MAX_LENGTH)
ownerIntroduction?: string
@ValidateIf((_object, value) => value !== undefined)
@IsArray()
@ArrayMaxSize(OWNER_CERTIFICATIONS_MAX_COUNT)
@IsString({ each: true })
@MaxLength(OWNER_CERTIFICATION_MAX_LENGTH, { each: true })
ownerCertifications?: string[]
}