54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
import { IsIn, IsNumber, IsOptional, IsString, IsUUID, MinLength } from 'class-validator';
|
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
|
|
export class UpsertAddressDto {
|
|
@ApiPropertyOptional({ description: 'ID адреса для обновления' })
|
|
@IsOptional()
|
|
@IsUUID('4', { message: 'ID адреса должен быть UUID' })
|
|
addressId?: string;
|
|
|
|
@ApiProperty({ description: 'Тип адреса', enum: ['HOME', 'WORK', 'OTHER'] })
|
|
@IsIn(['HOME', 'WORK', 'OTHER'], { message: 'Некорректный тип адреса' })
|
|
label!: 'HOME' | 'WORK' | 'OTHER';
|
|
|
|
@ApiProperty({ description: 'Город' })
|
|
@IsString({ message: 'Город должен быть строкой' })
|
|
@MinLength(1, { message: 'Укажите город' })
|
|
city!: string;
|
|
|
|
@ApiProperty({ description: 'Улица' })
|
|
@IsString({ message: 'Улица должна быть строкой' })
|
|
@MinLength(1, { message: 'Укажите улицу' })
|
|
street!: string;
|
|
|
|
@ApiProperty({ description: 'Дом' })
|
|
@IsString({ message: 'Дом должен быть строкой' })
|
|
@MinLength(1, { message: 'Укажите дом' })
|
|
house!: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Квартира или офис' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Квартира должна быть строкой' })
|
|
apartment?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Комментарий' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Комментарий должен быть строкой' })
|
|
comment?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Широта' })
|
|
@IsOptional()
|
|
@IsNumber({}, { message: 'Широта должна быть числом' })
|
|
latitude?: number;
|
|
|
|
@ApiPropertyOptional({ description: 'Долгота' })
|
|
@IsOptional()
|
|
@IsNumber({}, { message: 'Долгота должна быть числом' })
|
|
longitude?: number;
|
|
|
|
@ApiPropertyOptional({ description: 'Полный адрес одной строкой' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Полный адрес должен быть строкой' })
|
|
fullAddress?: string;
|
|
}
|