Skip to content

Commit 5e97eae

Browse files
committed
Migrate from IDB to Database plugin API
Signed-off-by: applenick <applenick@users.noreply.github.com>
1 parent 6750f77 commit 5e97eae

File tree

64 files changed

+2232
-1858
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+2232
-1858
lines changed

buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ dependencies {
2323
implementation("fr.minuskube.inv:smart-invs:1.2.7") { isTransitive = false }
2424

2525
implementation("redis.clients:jedis:3.5.1")
26-
implementation("co.aikar:idb-core:1.0.0-SNAPSHOT")
27-
implementation("co.aikar:idb-bukkit:1.0.0-SNAPSHOT")
2826
implementation("net.kyori:adventure-api:4.25.0")
2927
implementation("net.kyori:adventure-text-serializer-plain:4.25.0")
3028
implementation("net.kyori:adventure-platform-bukkit:4.4.1")
@@ -75,4 +73,4 @@ restrictImports {
7573
reason = "Use tc.oc.pgm.util.Assert to add assertions"
7674
bannedImports = listOf("com.google.common.base.Preconditions.**", "java.util.Objects.requireNonNull")
7775
}
78-
}
76+
}

core/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ plugins {
88

99
dependencies {
1010
compileOnly("dev.pgm.paper:paper-api:1.8_1.21.10-SNAPSHOT")
11+
compileOnly("tc.oc.occ:Database:2.0.0-SNAPSHOT")
12+
13+
implementation("org.xerial:sqlite-jdbc:3.51.1.0")
1114

1215
implementation(project(":util"))
1316

@@ -25,6 +28,7 @@ tasks.named<ShadowJar>("shadowJar") {
2528
// Exclude from minimization as they're required at runtime
2629
exclude(project(":platform-sportpaper"))
2730
exclude(project(":platform-modern"))
31+
exclude(dependency("org.xerial:sqlite-jdbc"))
2832
}
2933

3034
dependencies {
@@ -81,4 +85,4 @@ tasks {
8185
named("build") {
8286
dependsOn(shadowJar)
8387
}
84-
}
88+
}

core/src/main/java/dev/pgm/community/Community.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package dev.pgm.community;
22

33
import dev.pgm.community.commands.graph.CommunityCommandGraph;
4-
import dev.pgm.community.database.DatabaseConnection;
54
import dev.pgm.community.events.CommunityEvent;
65
import dev.pgm.community.feature.FeatureManager;
76
import dev.pgm.community.squads.SquadChannel;
@@ -24,9 +23,6 @@ public class Community extends JavaPlugin {
2423
// Config for general stuff (database)
2524
private CommunityConfig config;
2625

27-
// Database
28-
private DatabaseConnection database;
29-
3026
// Feature Manager
3127
private FeatureManager features;
3228

@@ -58,13 +54,14 @@ public void onEnable() {
5854
}
5955

6056
this.setupConfig();
61-
this.setupDatabase();
57+
getLogger().info(dev.pgm.community.database.DatabaseExecutor.describeBackend());
6258
this.setupFeatures();
6359
}
6460

6561
@Override
6662
public void onDisable() {
6763
features.disable();
64+
dev.pgm.community.database.DatabaseExecutor.shutdown();
6865
}
6966

7067
public void reload() {
@@ -82,10 +79,6 @@ private void setupConfig() {
8279
this.config = new CommunityConfig(getConfig());
8380
}
8481

85-
private void setupDatabase() {
86-
this.database = new DatabaseConnection(this);
87-
}
88-
8982
private void setupCommands() {
9083
try {
9184
new CommunityCommandGraph(this);
@@ -111,7 +104,7 @@ public void registerListener(Listener listener) {
111104
private void setupFeatures() {
112105
this.setupTranslations();
113106
this.setupInventory();
114-
this.features = new FeatureManager(getConfig(), getLogger(), database, inventory);
107+
this.features = new FeatureManager(getConfig(), getLogger(), inventory);
115108
this.setupCommands();
116109
}
117110

core/src/main/java/dev/pgm/community/assistance/feature/AssistanceFeatureBase.java renamed to core/src/main/java/dev/pgm/community/assistance/feature/types/AssistanceFeatureCore.java

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
package dev.pgm.community.assistance.feature;
1+
package dev.pgm.community.assistance.feature.types;
22

33
import static net.kyori.adventure.text.Component.space;
44
import static net.kyori.adventure.text.Component.text;
55
import static net.kyori.adventure.text.Component.translatable;
66

77
import com.google.common.cache.Cache;
88
import com.google.common.cache.CacheBuilder;
9+
import com.google.common.collect.Lists;
910
import dev.pgm.community.CommunityPermissions;
1011
import dev.pgm.community.assistance.AssistanceRequest;
1112
import dev.pgm.community.assistance.AssistanceRequest.RequestType;
1213
import dev.pgm.community.assistance.PlayerHelpRequest;
1314
import dev.pgm.community.assistance.Report;
1415
import dev.pgm.community.assistance.ReportConfig;
16+
import dev.pgm.community.assistance.feature.AssistanceFeature;
1517
import dev.pgm.community.assistance.menu.ReportCategoryMenu;
18+
import dev.pgm.community.assistance.store.AssistanceStore;
1619
import dev.pgm.community.events.PlayerHelpRequestEvent;
1720
import dev.pgm.community.events.PlayerPunishmentEvent;
1821
import dev.pgm.community.events.PlayerReportEvent;
@@ -22,6 +25,7 @@
2225
import dev.pgm.community.network.updates.types.AssistUpdate;
2326
import dev.pgm.community.users.feature.UsersFeature;
2427
import dev.pgm.community.utils.BroadcastUtils;
28+
import dev.pgm.community.utils.NameUtils;
2529
import dev.pgm.community.utils.NetworkUtils;
2630
import dev.pgm.community.utils.Sounds;
2731
import fr.minuskube.inv.InventoryManager;
@@ -40,59 +44,67 @@
4044
import net.kyori.adventure.text.event.HoverEvent;
4145
import net.kyori.adventure.text.format.NamedTextColor;
4246
import org.bukkit.Bukkit;
47+
import org.bukkit.configuration.Configuration;
4348
import org.bukkit.entity.Player;
4449
import org.bukkit.event.EventHandler;
4550
import org.jetbrains.annotations.Nullable;
4651
import tc.oc.pgm.util.Audience;
4752
import tc.oc.pgm.util.bukkit.BukkitUtils;
4853
import tc.oc.pgm.util.named.NameStyle;
4954

50-
public abstract class AssistanceFeatureBase extends FeatureBase implements AssistanceFeature {
55+
public class AssistanceFeatureCore extends FeatureBase implements AssistanceFeature {
5156

5257
private final NetworkFeature network;
53-
protected final UsersFeature users;
58+
private final UsersFeature users;
5459
private final InventoryManager inventory;
60+
private final AssistanceStore store;
5561

56-
protected final Cache<UUID, Instant> cooldown;
57-
protected final Cache<Report, Instant> recentReports;
58-
protected final Cache<PlayerHelpRequest, Instant> recentHelp;
62+
private final Cache<UUID, Instant> cooldown;
63+
private final Cache<Report, Instant> recentReports;
64+
private final Cache<PlayerHelpRequest, Instant> recentHelp;
5965

60-
public AssistanceFeatureBase(
61-
ReportConfig config,
66+
public AssistanceFeatureCore(
67+
Configuration config,
6268
Logger logger,
63-
String featureName,
64-
NetworkFeature network,
6569
UsersFeature users,
66-
InventoryManager inventory) {
67-
super(config, logger, featureName);
68-
cooldown = CacheBuilder.newBuilder()
69-
.expireAfterWrite(config.getCooldown(), TimeUnit.SECONDS)
70+
NetworkFeature network,
71+
InventoryManager inventory,
72+
AssistanceStore store) {
73+
super(new ReportConfig(config), logger, "Assistance");
74+
this.cooldown = CacheBuilder.newBuilder()
75+
.expireAfterWrite(getReportConfig().getCooldown(), TimeUnit.SECONDS)
7076
.build();
7177
this.recentReports = CacheBuilder.newBuilder()
72-
.expireAfterWrite(config.getReportExpireTime().getSeconds(), TimeUnit.SECONDS)
78+
.expireAfterWrite(getReportConfig().getReportExpireTime().getSeconds(), TimeUnit.SECONDS)
7379
.build();
7480
this.recentHelp = CacheBuilder.newBuilder()
75-
.expireAfterWrite(config.getReportExpireTime().getSeconds(), TimeUnit.SECONDS)
81+
.expireAfterWrite(getReportConfig().getReportExpireTime().getSeconds(), TimeUnit.SECONDS)
7682
.build();
7783
this.network = network;
7884
this.users = users;
7985
this.inventory = inventory;
86+
this.store = store;
8087

81-
if (config.isEnabled()) {
88+
if (getConfig().isEnabled()) {
8289
enable();
8390
network.registerSubscriber(new AssistanceSubscriber(this, network.getNetworkId(), logger));
8491
}
8592
}
8693

87-
protected ReportConfig getReportConfig() {
94+
private ReportConfig getReportConfig() {
8895
return (ReportConfig) getConfig();
8996
}
9097

98+
@Override
99+
public void enable() {
100+
super.enable();
101+
}
102+
91103
private boolean isCooldownEnabled() {
92104
return getReportConfig().getCooldown() > 0;
93105
}
94106

95-
protected boolean isPersistent() {
107+
private boolean isPersistent() {
96108
return getReportConfig().isPersistent();
97109
}
98110

@@ -162,9 +174,31 @@ public Report report(Player sender, Player target, String reason) {
162174
// Reset cooldown
163175
startCooldown(sender);
164176

177+
if (isPersistent()) {
178+
store.save(report);
179+
}
165180
return report;
166181
}
167182

183+
@Override
184+
public CompletableFuture<List<Report>> query(String target) {
185+
if (NameUtils.isMinecraftName(target)) {
186+
// CONVERT TO UUID if username
187+
return users
188+
.getStoredId(target)
189+
.thenApplyAsync(uuid -> uuid.isPresent()
190+
? store.queryList(uuid.get().toString()).join()
191+
: Lists.newArrayList());
192+
}
193+
194+
return store.queryList(target);
195+
}
196+
197+
@Override
198+
public CompletableFuture<Integer> count() {
199+
return store.count();
200+
}
201+
168202
@Override
169203
public Set<Report> getRecentReports() {
170204
return recentReports.asMap().keySet();
@@ -198,6 +232,11 @@ public void recieveUpdate(AssistanceRequest request) {
198232
broadcastRequest(request);
199233
}
200234

235+
@Override
236+
public void invalidate(UUID playerId) {
237+
store.invalidate(playerId);
238+
}
239+
201240
@EventHandler
202241
public void onPlayerReport(PlayerReportEvent event) {
203242
recentReports.put(event.getReport(), Instant.now());

core/src/main/java/dev/pgm/community/assistance/feature/types/NoDBAssistanceFeature.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

core/src/main/java/dev/pgm/community/assistance/feature/types/SQLAssistanceFeature.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)