forked from quarkusio/quarkus-github-lottery
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LotteryConfig.java
49 lines (38 loc) · 1.55 KB
/
LotteryConfig.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package io.quarkus.github.lottery.config;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.ZoneId;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.TreeSet;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
public record LotteryConfig(
@JsonProperty(required = true) NotificationsConfig notifications,
@JsonProperty(required = true) BucketsConfig buckets,
List<ParticipantConfig> participants) {
public static final String FILE_NAME = "quarkus-github-lottery.yml";
public record BucketsConfig(
@JsonProperty(required = true) TriageBucketConfig triage) {
public record TriageBucketConfig(
@JsonProperty(required = true) String needsTriageLabel,
@JsonProperty(required = true) Duration notificationExpiration) {
}
}
public record NotificationsConfig(
@JsonProperty(required = true) CreateIssuesConfig createIssues) {
public record CreateIssuesConfig(
@JsonProperty(required = true) String repository) {
}
}
public record ParticipantConfig(
@JsonProperty(required = true) String username,
@JsonProperty(required = true) @JsonDeserialize(as = TreeSet.class) Set<DayOfWeek> days,
Optional<ZoneId> timezone,
ParticipationConfig triage) {
}
public record ParticipationConfig(
@JsonProperty(required = true) int maxIssues) {
}
}