package study.runtime;

import java.time.Duration;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.bind.DefaultValue;
import org.springframework.util.unit.DataSize;
import org.springframework.validation.annotation.Validated;

@ConfigurationProperties("lab.notice")
@Validated
public record NoticeProperties(@NotBlank String message, @NotBlank String token,
    @NotNull Duration timeout, @Min(1) int workers, @NotNull @Valid Nested nested,
    @DefaultValue("1KB") DataSize limit, List<String> labels, Map<String,String> routes,
    @DefaultValue("unset") String clientId) {
  public record Nested(@NotBlank String region) {}
}
