Files
IdP/apps/api-gateway/src/dto/addresses.dto.ts
2026-06-24 14:37:15 +03:00

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;
}