import {
  IsArray,
  IsBoolean,
  IsEnum,
  IsNotEmpty,
  IsOptional,
  IsString,
  ValidateNested,
} from 'class-validator';
import { Article, ContentType, PlatformTarget } from '../sdk';
import { Type } from 'class-transformer';

export class PublishArticleDto implements Article {
  /**
   * 文章标题
   */
  @IsString()
  @IsNotEmpty({ message: '文章标题不能为空' })
  title: string;

  /**
   * 文章摘要,不传则由平台处理
   */
  @IsOptional()
  digest: string;

  /**
   * 文章内容(html)
   */
  @IsString()
  @IsNotEmpty({ message: '文章内容不能为空' })
  content: string;

  /**
   * 文章作者
   */
  @IsOptional()
  @IsString()
  author?: string;
}

export class CreatePublishDto {
  /**
   * 发布目标平台
   */
  // @IsNotEmpty({ message: 'target 字段不能为空' })
  @IsEnum(PlatformTarget)
  target: PlatformTarget;

  /**
   * 文章内容类型
   */
  @IsEnum(ContentType)
  contentType: ContentType;

  /**
   * 是否需要内联样式
   */
  @IsBoolean({ message: 'needInlineStyle 只能是boolean类型的值' })
  needInlineStyle?: boolean;

  /**
   * 文章列表
   */
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => PublishArticleDto)
  articles: PublishArticleDto[];
}