diff --git a/Plan/common/src/main/java/com/djrapitops/plan/DataService.java b/Plan/common/src/main/java/com/djrapitops/plan/DataService.java index b799d05b7..c00d54dbf 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/DataService.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/DataService.java @@ -16,6 +16,8 @@ */ package com.djrapitops.plan; +import com.djrapitops.plan.storage.database.queries.Query; + import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; @@ -73,4 +75,6 @@ public interface DataService { DataService registerSupplier(Class type, Class

parameterType, Function supplierWithParameter); + DataService registerDBSupplier(Class type, Class

parameterType, Function> supplierWithParameter); + } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/DataSvc.java b/Plan/common/src/main/java/com/djrapitops/plan/DataSvc.java index 8ca95957b..cc27379f7 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/DataSvc.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/DataSvc.java @@ -16,6 +16,10 @@ */ package com.djrapitops.plan; +import com.djrapitops.plan.storage.database.DBSystem; +import com.djrapitops.plan.storage.database.queries.Query; +import dagger.Lazy; + import javax.inject.Inject; import javax.inject.Singleton; import java.util.*; @@ -33,8 +37,13 @@ public class DataSvc implements DataService { private final Map suppliersWithParameter; private final MultiHashMap consumers; + private final Lazy dbSystem; + @Inject - public DataSvc() { + public DataSvc( + Lazy dbSystem + ) { + this.dbSystem = dbSystem; mappers = new MultiHashMap<>(); mappersReverse = new MultiHashMap<>(); suppliers = new ConcurrentHashMap<>(); @@ -122,6 +131,11 @@ public class DataSvc implements DataService { return this; } + @Override + public DataService registerDBSupplier(Class type, Class

parameterType, Function> queryVisitor) { + return registerSupplier(type, parameterType, parameter -> dbSystem.get().getDatabase().query(queryVisitor.apply(parameter))); + } + private static class ClassPair { final Class a; final Class b;