AppProperties.java
package com.seebie.server;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
import java.time.Duration;
@Validated
@ConfigurationProperties(prefix="app")
public record AppProperties(@NotNull Security security, @NotNull Notification notification, @NotNull AI ai) {
public record Notification(@NotNull TriggerAfter triggerAfter) {
public record TriggerAfter(@NotNull Duration lastNotified, @NotNull Duration sleepLog) {}
}
public record Security(@NotNull RememberMe rememberMe) {
public record RememberMe(@NotNull Duration tokenValidity, @NotEmpty String key, @NotNull @Positive int scanFrequencyMinutes) {
public int tokenValiditySeconds() {
return (int) tokenValidity.toSeconds();
}
}
}
public record AI(@NotNull System system) {
public record System(@NotNull String prompt) {
}
}
}