34 lines
1.5 KiB
TypeScript
Executable File
34 lines
1.5 KiB
TypeScript
Executable File
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
|
|
import { IsBoolean, IsInt, IsNotEmpty, IsOptional, IsString, IsUUID, IsUrl, Length } from "class-validator";
|
|
|
|
import { CategoryMessage } from "../../../common/enums/message.enum";
|
|
|
|
export class CreateDanakServiceCategoryDto {
|
|
@IsNotEmpty({ message: CategoryMessage.TITLE_REQUIRED })
|
|
@IsString({ message: CategoryMessage.TITLE_STRING })
|
|
@Length(3, 50, { message: CategoryMessage.TITLE_LENGTH })
|
|
@ApiProperty({ description: "Category title", example: "business" })
|
|
title: string;
|
|
|
|
@IsNotEmpty({ message: CategoryMessage.ICON_REQUIRED })
|
|
@IsUrl({ protocols: ["http", "https"], require_protocol: true }, { message: CategoryMessage.ICON_SHOULD_BE_URL })
|
|
@ApiProperty({ description: "Category icon", example: "https://example.com/icon.png" })
|
|
icon: string;
|
|
|
|
@IsNotEmpty({ message: CategoryMessage.IS_ACTIVE_REQUIRED })
|
|
@IsBoolean({ message: CategoryMessage.IS_ACTIVE_REQUIRED })
|
|
@ApiProperty({ description: "Category status", example: true })
|
|
isActive: boolean;
|
|
|
|
@IsOptional()
|
|
@IsNotEmpty({ message: CategoryMessage.PARENT_ID_REQUIRED })
|
|
@IsUUID("4", { message: CategoryMessage.PARENT_ID_SHOULD_BE_UUID })
|
|
@ApiPropertyOptional({ description: "Parent category id", example: "8b1e8b1e-8b1e-8b1e-8b1e-8b1e8b1e8b1e" })
|
|
parentId?: string;
|
|
|
|
@IsNotEmpty({ message: CategoryMessage.ORDER_REQUIRED })
|
|
@IsInt({ message: CategoryMessage.ORDER_SHOULD_BE_INT })
|
|
@ApiProperty({ description: "Category order", example: 1 })
|
|
order: number;
|
|
}
|