41 lines
1.7 KiB
TypeScript
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;
|
|
}
|