package com.social.media.application.socialnetwork.command;

import com.social.media.domain.socialnetwork.valueobject.SocialNetworkId;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Max;

import java.util.List;
import java.util.Map;

/**
 * Command to update an existing social network
 */
public record UpdateSocialNetworkCommand(
    @NotNull(message = "Social network ID is required")
    SocialNetworkId socialNetworkId,
    
    @Size(max = 100, message = "Display name must not exceed 100 characters")
    String displayName,
    
    @Size(max = 500, message = "Description must not exceed 500 characters")
    String description,
    
    @Size(max = 255, message = "Base URL must not exceed 255 characters")
    String baseUrl,
    
    @Size(max = 20, message = "API version must not exceed 20 characters")
    String apiVersion,
    
    @Min(value = 1, message = "Max post length must be at least 1")
    @Max(value = 10000, message = "Max post length must not exceed 10000")
    Integer maxPostLength,
    
    Boolean active,
    
    Boolean supportsPosting,
    
    Boolean supportsScheduling,
    
    Boolean supportsAnalytics,
    
    List<String> supportedMediaTypes,
    
    Map<String, Object> authConfig,
    
    Map<String, Integer> apiLimits
) {}

