Files
dsc-api/src/modules/sliders/DTO/create-slider.dto.ts
T
2025-04-13 10:32:24 +03:30

41 lines
1.7 KiB
TypeScript

import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
import { IsBoolean, IsNotEmpty, IsNumber, IsOptional, IsString, MaxLength } from "class-validator";
import { SliderMessage } from "../../../common/enums/message.enum";
export class CreateSliderDto {
@ApiProperty({ description: "Title of the slider", example: "Summer Sale" })
@IsNotEmpty({ message: SliderMessage.TITLE_REQUIRED })
@IsString({ message: SliderMessage.TITLE_STRING })
@MaxLength(150, { message: SliderMessage.TITLE_MAX_LENGTH })
title: string;
@ApiPropertyOptional({ description: "Description of the slider", example: "Get up to 50% off" })
@IsOptional()
@IsString({ message: SliderMessage.DESCRIPTION_STRING })
@MaxLength(255, { message: SliderMessage.DESCRIPTION_MAX_LENGTH })
description?: string;
@ApiProperty({ description: "URL of the slider image", example: "https://example.com/image.jpg" })
@IsNotEmpty({ message: SliderMessage.IMAGE_URL_REQUIRED })
@IsString({ message: SliderMessage.IMAGE_URL_STRING })
@MaxLength(255, { message: SliderMessage.IMAGE_URL_MAX_LENGTH })
imageUrl: string;
@ApiPropertyOptional({ description: "Link URL for the slider", example: "https://example.com/sale" })
@IsOptional()
@IsString({ message: SliderMessage.LINK_STRING })
@MaxLength(255, { message: SliderMessage.LINK_MAX_LENGTH })
link?: string;
@ApiPropertyOptional({ description: "Order of the slider", example: 1, default: 0 })
@IsOptional()
@IsNumber({}, { message: SliderMessage.ORDER_NUMBER })
order?: number;
@ApiPropertyOptional({ description: "Whether the slider is active", example: true, default: true })
@IsOptional()
@IsBoolean({ message: SliderMessage.IS_ACTIVE_SHOULD_BE_A_BOOLEAN })
isActive?: boolean;
}