import { IsString, IsInt, Min, Max, MinLength } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';

export class DeployServerDto {
  @ApiProperty({ example: 'My Rust Server', description: 'Server hostname' })
  @IsString()
  server_name: string;

  @ApiProperty({ example: 100, description: 'Maximum player slots' })
  @IsInt()
  @Min(1)
  @Max(500)
  max_players: number;

  @ApiProperty({ example: 4000, description: 'World size (1000-8000)' })
  @IsInt()
  @Min(1000)
  @Max(8000)
  world_size: number;

  @ApiProperty({ example: 12345, description: 'Map seed' })
  @IsInt()
  seed: number;

  @ApiProperty({ example: 28015, description: 'Server game port' })
  @IsInt()
  @Min(1024)
  @Max(65535)
  server_port: number;

  @ApiProperty({ example: 28016, description: 'RCON port' })
  @IsInt()
  @Min(1024)
  @Max(65535)
  rcon_port: number;

  @ApiProperty({ example: 'changeme', description: 'RCON password (min 6 chars)' })
  @IsString()
  @MinLength(6)
  rcon_password: string;
}
