Skip to content

Commit b5548ef

Browse files
committed
Add separate Oura config for getting routes
1 parent 51a6c4b commit b5548ef

File tree

6 files changed

+77
-34
lines changed

6 files changed

+77
-34
lines changed

kafka-connect-oura-source/src/main/java/org/radarbase/connect/rest/oura/OuraRestSourceConnectorConfig.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
import org.apache.kafka.connect.errors.ConnectException;
4646
import org.radarbase.connect.rest.oura.user.OuraUserRepository;
4747
import org.radarbase.connect.rest.oura.user.OuraServiceUserRepository;
48+
import org.radarbase.oura.route.OuraConfig;
49+
import org.radarbase.oura.route.OuraRouteType;
50+
import java.util.EnumSet;
4851

4952
public class OuraRestSourceConnectorConfig extends AbstractConfig {
5053
public static final Pattern COLON_PATTERN = Pattern.compile(":");
@@ -527,4 +530,25 @@ public URL getOuraUserRepositoryTokenUrl() {
527530
public boolean getOuraRestModePeriodEnabled() { return getBoolean(OURA_REST_MODE_PERIOD_ENABLED_CONFIG); }
528531
public boolean getOuraSleepTimeRecommendationEnabled() { return getBoolean(OURA_SLEEP_TIME_RECOMMENDATION_ENABLED_CONFIG); }
529532

533+
/**
534+
* Convert this connector configuration into an Oura library configuration.
535+
*/
536+
public OuraConfig toOuraConfig() {
537+
EnumSet<OuraRouteType> enabled = EnumSet.noneOf(OuraRouteType.class);
538+
if (getOuraDailyActivityEnabled()) enabled.add(OuraRouteType.DAILY_ACTIVITY);
539+
if (getOuraDailyReadinessEnabled()) enabled.add(OuraRouteType.DAILY_READINESS);
540+
if (getOuraDailySleepEnabled()) enabled.add(OuraRouteType.DAILY_SLEEP);
541+
if (getOuraDailyOxygenSaturationEnabled()) enabled.add(OuraRouteType.DAILY_OXYGEN_SATURATION);
542+
if (getOuraHeartRateEnabled()) enabled.add(OuraRouteType.HEART_RATE);
543+
if (getOuraPersonalInfoEnabled()) enabled.add(OuraRouteType.PERSONAL_INFO);
544+
if (getOuraSessionEnabled()) enabled.add(OuraRouteType.SESSION);
545+
if (getOuraSleepEnabled()) enabled.add(OuraRouteType.SLEEP);
546+
if (getOuraTagEnabled()) enabled.add(OuraRouteType.TAG);
547+
if (getOuraWorkoutEnabled()) enabled.add(OuraRouteType.WORKOUT);
548+
if (getOuraRingConfigurationEnabled()) enabled.add(OuraRouteType.RING_CONFIGURATION);
549+
if (getOuraRestModePeriodEnabled()) enabled.add(OuraRouteType.REST_MODE_PERIOD);
550+
if (getOuraSleepTimeRecommendationEnabled()) enabled.add(OuraRouteType.SLEEP_TIME_RECOMMENDATION);
551+
return new OuraConfig(enabled);
552+
}
553+
530554
}

kafka-connect-oura-source/src/main/java/org/radarbase/connect/rest/oura/OuraSourceTask.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.radarbase.oura.route.OuraRouteFlags;
5050
import org.radarbase.oura.route.OuraRouteFactory;
5151
import org.radarbase.oura.route.Route;
52+
import org.radarbase.oura.route.OuraConfig;
5253
import org.slf4j.Logger;
5354
import org.slf4j.LoggerFactory;
5455
import org.radarbase.oura.user.User;
@@ -75,23 +76,8 @@ public void initialize(OuraRestSourceConnectorConfig config, OffsetStorageReader
7576
this.baseClient = new OkHttpClient();
7677

7778
this.userRepository = ouraConfig.getUserRepository();
78-
OuraRouteFlags flags = new OuraRouteFlags(
79-
ouraConfig.getOuraDailyActivityEnabled(),
80-
ouraConfig.getOuraDailyReadinessEnabled(),
81-
ouraConfig.getOuraDailySleepEnabled(),
82-
ouraConfig.getOuraDailyOxygenSaturationEnabled(),
83-
ouraConfig.getOuraHeartRateEnabled(),
84-
ouraConfig.getOuraPersonalInfoEnabled(),
85-
ouraConfig.getOuraSessionEnabled(),
86-
ouraConfig.getOuraSleepEnabled(),
87-
ouraConfig.getOuraTagEnabled(),
88-
ouraConfig.getOuraWorkoutEnabled(),
89-
ouraConfig.getOuraRingConfigurationEnabled(),
90-
ouraConfig.getOuraRestModePeriodEnabled(),
91-
ouraConfig.getOuraSleepTimeRecommendationEnabled()
92-
);
9379
this.offsetManager = new KafkaOffsetManager(offsetStorageReader);
94-
this.ouraRequestGenerator = new OuraRequestGenerator(this.userRepository, this.offsetManager, flags);
80+
this.ouraRequestGenerator = new OuraRequestGenerator(this.userRepository, this.offsetManager, ouraConfig.toOuraConfig());
9581
this.routes = this.ouraRequestGenerator.getRoutes();
9682
this.offsetManager.initialize(getPartitions());
9783
}

oura-library/src/main/kotlin/org/radarbase/oura/request/OuraRequestGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
66
import okhttp3.Response
77
import okhttp3.ResponseBody
88
import org.radarbase.oura.converter.TopicData
9+
import org.radarbase.oura.route.OuraConfig
910
import org.radarbase.oura.route.OuraRouteFactory
10-
import org.radarbase.oura.route.OuraRouteFlags
1111
import org.radarbase.oura.route.Route
1212
import org.radarbase.oura.user.User
1313
import org.radarbase.oura.user.UserRepository
@@ -22,8 +22,8 @@ class OuraRequestGenerator
2222
constructor(
2323
private val userRepository: UserRepository,
2424
private val ouraOffsetManager: OuraOffsetManager,
25-
private val flags: OuraRouteFlags,
26-
public val routes: List<Route> = OuraRouteFactory.getRoutes(userRepository, flags),
25+
private val config: OuraConfig,
26+
public val routes: List<Route> = OuraRouteFactory.getRoutes(userRepository, config),
2727
private val defaultQueryRange: Duration = Duration.ofDays(15),
2828
) : RequestGenerator {
2929
private val routeNextRequest: MutableMap<String, Instant> = mutableMapOf()
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.radarbase.oura.route
2+
3+
data class OuraConfig @JvmOverloads constructor(
4+
// New extensible configuration
5+
val enabledRoutes: Set<OuraRouteType> = defaultEnabledRoutes(),
6+
) {
7+
companion object {
8+
@JvmStatic
9+
fun defaultEnabledRoutes(): Set<OuraRouteType> = enumValues<OuraRouteType>().toSet()
10+
}
11+
}

oura-library/src/main/kotlin/org/radarbase/oura/route/OuraRouteFactory.kt

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,53 @@ object OuraRouteFactory {
66

77
@JvmStatic
88
fun getRoutes(userRepository: UserRepository): List<Route> =
9-
getRoutes(userRepository, OuraRouteFlags())
9+
getRoutes(userRepository, OuraConfig())
1010

1111
@JvmStatic
12-
fun getRoutes(userRepository: UserRepository, flags: OuraRouteFlags): List<Route> {
12+
fun getRoutes(userRepository: UserRepository, config: OuraConfig): List<Route> {
1313
val routes = mutableListOf<Route>()
14-
if (flags.dailyActivityEnabled) {
14+
15+
// Helper to add based on enum presence
16+
fun isEnabled(type: OuraRouteType): Boolean =
17+
type in config.enabledRoutes
18+
19+
if (isEnabled(OuraRouteType.DAILY_ACTIVITY)) {
1520
routes.add(OuraDailyActivityRoute(userRepository))
1621
}
17-
if (flags.dailyReadinessEnabled) {
22+
if (isEnabled(OuraRouteType.DAILY_READINESS)) {
1823
routes.add(OuraDailyReadinessRoute(userRepository))
1924
}
20-
if (flags.dailySleepEnabled) {
25+
if (isEnabled(OuraRouteType.DAILY_SLEEP)) {
2126
routes.add(OuraDailySleepRoute(userRepository))
2227
}
23-
if (flags.dailyOxygenSaturationEnabled) {
28+
if (isEnabled(OuraRouteType.DAILY_OXYGEN_SATURATION)) {
2429
routes.add(OuraDailyOxygenSaturationRoute(userRepository))
2530
}
26-
if (flags.heartRateEnabled) {
31+
if (isEnabled(OuraRouteType.HEART_RATE)) {
2732
routes.add(OuraHeartRateRoute(userRepository))
2833
}
29-
if (flags.personalInfoEnabled) {
34+
if (isEnabled(OuraRouteType.PERSONAL_INFO)) {
3035
routes.add(OuraPersonalInfoRoute(userRepository))
3136
}
32-
if (flags.sessionEnabled) {
37+
if (isEnabled(OuraRouteType.SESSION)) {
3338
routes.add(OuraSessionRoute(userRepository))
3439
}
35-
if (flags.sleepEnabled) {
40+
if (isEnabled(OuraRouteType.SLEEP)) {
3641
routes.add(OuraSleepRoute(userRepository))
3742
}
38-
if (flags.tagEnabled) {
43+
if (isEnabled(OuraRouteType.TAG)) {
3944
routes.add(OuraTagRoute(userRepository))
4045
}
41-
if (flags.workoutEnabled) {
46+
if (isEnabled(OuraRouteType.WORKOUT)) {
4247
routes.add(OuraWorkoutRoute(userRepository))
4348
}
44-
if (flags.ringConfigurationEnabled) {
49+
if (isEnabled(OuraRouteType.RING_CONFIGURATION)) {
4550
routes.add(OuraRingConfigurationRoute(userRepository))
4651
}
47-
if (flags.restModePeriodEnabled) {
52+
if (isEnabled(OuraRouteType.REST_MODE_PERIOD)) {
4853
routes.add(OuraRestModePeriodRoute(userRepository))
4954
}
50-
if (flags.sleepTimeRecommendationEnabled) {
55+
if (isEnabled(OuraRouteType.SLEEP_TIME_RECOMMENDATION)) {
5156
routes.add(OuraSleepTimeRecommendationRoute(userRepository))
5257
}
5358
return routes
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.radarbase.oura.route
2+
3+
enum class OuraRouteType {
4+
DAILY_ACTIVITY,
5+
DAILY_READINESS,
6+
DAILY_SLEEP,
7+
DAILY_OXYGEN_SATURATION,
8+
HEART_RATE,
9+
PERSONAL_INFO,
10+
SESSION,
11+
SLEEP,
12+
TAG,
13+
WORKOUT,
14+
RING_CONFIGURATION,
15+
REST_MODE_PERIOD,
16+
SLEEP_TIME_RECOMMENDATION,
17+
}

0 commit comments

Comments
 (0)