425 lines
5.8 KiB
TypeScript
425 lines
5.8 KiB
TypeScript
import {
|
|
IsString,
|
|
IsOptional,
|
|
IsEnum,
|
|
IsArray,
|
|
IsUUID,
|
|
IsNumber,
|
|
IsBoolean,
|
|
IsDateString,
|
|
} from 'class-validator';
|
|
import {
|
|
ArticleStatus,
|
|
LiveBlogStatus,
|
|
ImagePosition,
|
|
ImageSize,
|
|
VideoPosition,
|
|
} from './entities';
|
|
|
|
export class CreateArticleDto {
|
|
@IsString()
|
|
title: string;
|
|
|
|
@IsString()
|
|
content: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
excerpt?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
slug?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
featuredImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
tags?: string[];
|
|
|
|
@IsOptional()
|
|
@IsEnum(ArticleStatus)
|
|
status?: ArticleStatus;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
strapiId?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isHero?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
categoryId?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImagePosition)
|
|
imagePosition?: ImagePosition;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImageSize)
|
|
imageSize?: ImageSize;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(VideoPosition)
|
|
videoPosition?: VideoPosition;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoCaption?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogTitle?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogDescription?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterTitle?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterDescription?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterImage?: string;
|
|
}
|
|
|
|
export class UpdateArticleDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
title?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
content?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
excerpt?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
slug?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
featuredImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
tags?: string[];
|
|
|
|
@IsOptional()
|
|
@IsEnum(ArticleStatus)
|
|
status?: ArticleStatus;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
strapiId?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isHero?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
categoryId?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImagePosition)
|
|
imagePosition?: ImagePosition;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImageSize)
|
|
imageSize?: ImageSize;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(VideoPosition)
|
|
videoPosition?: VideoPosition;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoCaption?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogTitle?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogDescription?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
ogImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterTitle?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterDescription?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
twitterImage?: string;
|
|
}
|
|
|
|
export class FindArticlesDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
category?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
author?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
tag?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
status?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
search?: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
page?: number;
|
|
|
|
@IsOptional()
|
|
limit?: number;
|
|
}
|
|
|
|
export class FindLiveBlogsDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
category?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
author?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
status?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isPinned?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
search?: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
page?: number;
|
|
|
|
@IsOptional()
|
|
limit?: number;
|
|
}
|
|
|
|
export class CreateLiveBlogDto {
|
|
@IsString()
|
|
title: string;
|
|
|
|
@IsString()
|
|
slug: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(LiveBlogStatus)
|
|
status?: LiveBlogStatus;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isPinned?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
strapiId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
categoryId?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
featuredImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImagePosition)
|
|
imagePosition?: ImagePosition;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImageSize)
|
|
imageSize?: ImageSize;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(VideoPosition)
|
|
videoPosition?: VideoPosition;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoCaption?: string;
|
|
}
|
|
|
|
export class UpdateLiveBlogDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
title?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
slug?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(LiveBlogStatus)
|
|
status?: LiveBlogStatus;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isPinned?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
strapiId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
categoryId?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
featuredImage?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImagePosition)
|
|
imagePosition?: ImagePosition;
|
|
|
|
@IsOptional()
|
|
@IsEnum(ImageSize)
|
|
imageSize?: ImageSize;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(VideoPosition)
|
|
videoPosition?: VideoPosition;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoCaption?: string;
|
|
}
|
|
|
|
export class CreateLiveBlogUpdateDto {
|
|
@IsString()
|
|
content: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isPinned?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsDateString()
|
|
scheduledAt?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
image?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
authorName?: string;
|
|
}
|
|
|
|
export class UpdateLiveBlogUpdateDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
content?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isPinned?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
authorId?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
image?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
videoUrl?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
authorName?: string;
|
|
}
|