import { IsString, MinLength, MaxLength, IsOptional, IsIn, IsArray, ArrayMaxSize, IsBoolean } from 'class-validator';

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

  @IsOptional()
  @IsIn(['public', 'private'])
  type?: string;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  topic?: string;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  purpose?: string;

  @IsOptional()
  @IsArray()
  @ArrayMaxSize(100)
  @IsString({ each: true })
  user_ids?: string[];
}

export class UpdateChannelDto {
  @IsOptional()
  @IsString()
  @MaxLength(80)
  name?: string;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  topic?: string;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  purpose?: string;
}

export class InviteToChannelDto {
  @IsArray()
  @ArrayMaxSize(100)
  @IsString({ each: true })
  user_ids!: string[];
}

export class CreateBookmarkDto {
  @IsString()
  @IsIn(['link', 'channel', 'message'])
  type!: string;

  @IsOptional()
  @IsString()
  @MaxLength(120)
  title?: string;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  url?: string;

  @IsOptional()
  @IsString()
  @MaxLength(50)
  emoji?: string;
}

export class PinMessageDto {
  @IsString()
  message_id!: string;
}