AnalyticsProperties.java
package com.ecommerce.analytics.infrastructure.config;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
import java.time.ZoneId;
@Validated
@ConfigurationProperties("ecommerce.analytics")
public record AnalyticsProperties(
@NotBlank String zoneId,
@Min(1) @Max(3660) int maximumRangeDays,
@Min(100) @Max(100000) int reconciliationRowLimit) {
public AnalyticsProperties {
zoneId = zoneId == null || zoneId.isBlank() ? "Asia/Shanghai" : zoneId;
maximumRangeDays = maximumRangeDays <= 0 ? 366 : maximumRangeDays;
reconciliationRowLimit = reconciliationRowLimit <= 0 ? 10000 : reconciliationRowLimit;
ZoneId.of(zoneId);
}
public ZoneId businessZone() {
return ZoneId.of(zoneId);
}
}