import { IsIn, IsInt, IsOptional, IsString, MaxLength, Min, MinLength } from 'class-validator';

export class CreateChannelDto {
  @IsString()
  @MinLength(1)
  @MaxLength(160)
  name!: string;

  @IsOptional()
  @IsString()
  @MaxLength(16)
  icon?: string;

  @IsOptional()
  @IsString()
  @MaxLength(600)
  description?: string;

  @IsOptional()
  @IsIn(['MEMBERS', 'ADMINS'])
  visibility?: 'MEMBERS' | 'ADMINS';

  @IsOptional()
  @IsInt()
  @Min(0)
  position?: number;
}

export class UpdateChannelDto {
  @IsOptional()
  @IsString()
  @MinLength(1)
  @MaxLength(160)
  name?: string;

  @IsOptional()
  @IsString()
  @MaxLength(16)
  icon?: string;

  @IsOptional()
  @IsString()
  @MaxLength(600)
  description?: string;

  @IsOptional()
  @IsIn(['MEMBERS', 'ADMINS'])
  visibility?: 'MEMBERS' | 'ADMINS';

  @IsOptional()
  @IsInt()
  @Min(0)
  position?: number;
}
