Skip to content

Commit bfe47b6

Browse files
committed
feat: works correctly
1 parent 1612aa3 commit bfe47b6

File tree

9 files changed

+72
-44
lines changed

9 files changed

+72
-44
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,5 @@ gradle-app.setting
5757
*.hprof
5858

5959
# End of https://www.toptal.com/developers/gitignore/api/intellij,gradle
60+
61+
run/

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ tasks {
7070
}
7171

7272
shadowJar {
73-
// enableAutoRelocation = true
74-
// relocationPrefix = "net.azisaba.kdstatusreloaded.libs"
7573
mergeServiceFiles()
7674
}
7775

src/main/java/net/azisaba/kdstatusreloaded/commands/KDStatusCommand.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
3535
return true;
3636
}
3737

38+
if(args[0].equalsIgnoreCase("check")) {
39+
var worldConfig = plugin.getPluginConfig().world;
40+
sender.sendMessage("- ShowCountCancelled: " + worldConfig.showCountCancelled);
41+
sender.sendMessage("->>> disables <<<-");
42+
sender.sendMessage("Kill: " + String.join(", ", worldConfig.disableKillWorldList));
43+
sender.sendMessage("Death: " + String.join(", ", worldConfig.disableDeathWorldList));
44+
sender.sendMessage("------------------");
45+
}
46+
3847
sender.sendMessage(Chat.f("&cUsage: {0}", cmd.getUsage().replace("{LABEL}", label)));
3948
return true;
4049
}

src/main/java/net/azisaba/kdstatusreloaded/playerkd/PlayerKD.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,19 @@ public void onDisable() {
2828
}
2929

3030
public void loadAll(List<UUID> playerUuids) {
31-
playerUuids.forEach(kdCache::get);
31+
playerUuids.forEach(kdCache::getData);
3232
}
3333

3434
public KDUserData getPlayerData(UUID uuid) {
35-
return kdCache.get(uuid);
35+
return kdCache.getData(uuid);
3636
}
3737

3838
public Optional<KDUserData> getPlayerDataWithNoCaching(UUID uuid) {
39-
if(kdCache.isCached(uuid)) return Optional.of(kdCache.get(uuid));
39+
if(kdCache.isCached(uuid)) return Optional.of(kdCache.getData(uuid));
4040
return kdDatabase.kdUserDataRepository().findById(uuid);
4141
}
4242

4343
public void migrate() {
44-
kdDatabase.migration();
44+
kdDatabase.migrate();
4545
}
4646
}

src/main/java/net/azisaba/kdstatusreloaded/playerkd/cache/KDCache.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,19 @@ public KDCache(KDUserDataRepository dataRepository) {
1818
this.dataRepository = dataRepository;
1919
}
2020

21-
public KDUserData get(UUID uuid) {
21+
public KDUserData getData(UUID uuid) {
22+
return get(uuid).clone();
23+
}
24+
25+
// For internal
26+
protected KDUserData get(UUID uuid) {
2227
if (!cacheMap.containsKey(uuid)) {
2328
cacheMap.put(
2429
uuid,
2530
dataRepository.findById(uuid).orElse(new KDUserData(uuid, ""))
2631
);
2732
}
28-
return cacheMap.get(uuid).clone();
33+
return cacheMap.get(uuid);
2934
}
3035

3136
public void store(UUID uuid) {

src/main/java/net/azisaba/kdstatusreloaded/playerkd/db/KDDatabase.java

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,30 @@
33
import com.zaxxer.hikari.HikariConfig;
44
import com.zaxxer.hikari.HikariDataSource;
55
import net.azisaba.kdstatusreloaded.config.KDConfig;
6-
import org.bukkit.Bukkit;
7-
import org.flywaydb.core.Flyway;
86
import org.jdbi.v3.core.Jdbi;
97
import org.jdbi.v3.sqlobject.SqlObjectPlugin;
108
import org.jspecify.annotations.NullMarked;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
1111

12+
import java.io.BufferedReader;
1213
import java.io.File;
1314
import java.io.InputStream;
14-
import java.net.URISyntaxException;
15-
import java.nio.file.Files;
16-
import java.nio.file.Paths;
17-
import java.nio.file.StandardCopyOption;
15+
import java.io.InputStreamReader;
16+
import java.net.URL;
17+
import java.nio.charset.StandardCharsets;
18+
import java.util.ArrayList;
19+
import java.util.Collections;
20+
import java.util.Comparator;
1821
import java.util.Enumeration;
19-
import java.util.jar.JarEntry;
20-
import java.util.jar.JarFile;
22+
import java.util.HashSet;
23+
import java.util.List;
24+
import java.util.Set;
25+
import java.util.stream.Collectors;
2126

2227
@NullMarked
2328
public class KDDatabase {
29+
private static final Logger logger = LoggerFactory.getLogger(KDDatabase.class);
2430
private final HikariDataSource hikariDataSource;
2531
private Jdbi jdbi;
2632
private KDUserDataRepository kdUserDataRepository;
@@ -47,21 +53,7 @@ public KDDatabase(KDConfig.DatabaseConfig dbConfig, File pluginFolder) {
4753
jdbi.installPlugin(new SqlObjectPlugin());
4854
kdUserDataRepository = jdbi.onDemand(KDUserDataRepository.class);
4955

50-
migration();
51-
}
52-
53-
public void migration() {
54-
Flyway flyway = Flyway.configure(KDDatabase.class.getClassLoader())
55-
.baselineVersion("0")
56-
.baselineOnMigrate(true)
57-
.dataSource(hikariDataSource)
58-
.locations("queries/migrations/mysql")
59-
.validateMigrationNaming(true)
60-
.validateOnMigrate(true)
61-
.load();
62-
63-
flyway.repair();
64-
flyway.migrate();
56+
migrate();
6557
}
6658

6759
public KDUserDataRepository kdUserDataRepository() {
@@ -77,4 +69,30 @@ public void shutdown() {
7769
// close datasource
7870
hikariDataSource.close();
7971
}
72+
73+
public void migrate() {
74+
// v0
75+
jdbi.useHandle(handle ->
76+
handle.execute(
77+
"CREATE TABLE IF NOT EXISTS kill_death_data (" +
78+
" uuid VARCHAR(64) NOT NULL," +
79+
" name VARCHAR(36) NOT NULL," +
80+
" kills INT DEFAULT 0," +
81+
" deaths INT DEFAULT 0 ," +
82+
" daily_kills INT DEFAULT 0," +
83+
" monthly_kills INT DEFAULT 0," +
84+
" yearly_kills INT DEFAULT 0," +
85+
" last_updated BIGINT DEFAULT -1" +
86+
");"
87+
)
88+
);
89+
90+
// v1
91+
jdbi.useHandle(handle ->
92+
handle.execute(
93+
"ALTER TABLE kill_death_data " +
94+
"ADD UNIQUE KEY IF NOT EXISTS uniq_uuid (uuid);"
95+
)
96+
);
97+
}
8098
}

src/main/java/net/azisaba/kdstatusreloaded/playerkd/db/KDUserDataRepository.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import net.azisaba.kdstatusreloaded.playerkd.model.KDUserData;
44
import org.jdbi.v3.sqlobject.config.RegisterConstructorMapper;
55
import org.jdbi.v3.sqlobject.customizer.Bind;
6+
import org.jdbi.v3.sqlobject.customizer.BindFields;
67
import org.jdbi.v3.sqlobject.customizer.BindMethods;
78
import org.jdbi.v3.sqlobject.statement.SqlQuery;
89
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
@@ -19,6 +20,11 @@ public interface KDUserDataRepository {
1920
@SqlQuery("SELECT * FROM kill_death_data ORDER BY kills DESC LIMIT :limit")
2021
List<KDUserData> findTopByTotalKills(@Bind("limit") int limit);
2122

22-
@SqlUpdate("INSERT INTO kill_death_data (uuid, name, kills, deaths, daily_kills, monthly_kills, yearly_kills, last_updated) VALUES (:uuid, :name, :totalKills, :deaths, :dailyKills, :monthlyKills, :yearlyKills, :lastUpdated)")
23-
void upsert(@BindMethods KDUserData data);
23+
@SqlUpdate("INSERT INTO kill_death_data (uuid, name, kills, deaths, daily_kills, monthly_kills, yearly_kills, last_updated) " +
24+
"VALUES (:uuid, :name, :totalKills, :deaths, :dailyKills, :monthlyKills, :yearlyKills, :lastUpdated) " +
25+
"ON DUPLICATE KEY UPDATE " +
26+
"name=VALUES(name), kills=VALUES(kills), deaths=VALUES(deaths), " +
27+
"daily_kills=VALUES(daily_kills), monthly_kills=VALUES(monthly_kills), " +
28+
"yearly_kills=VALUES(yearly_kills), last_updated=VALUES(last_updated)")
29+
void upsert(@BindFields KDUserData data);
2430
}

src/main/java/net/azisaba/kdstatusreloaded/playerkd/model/KDUserData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public KDUserData(UUID uuid, String name) {
1717
this(uuid, name, 0, 0, 0, 0, 0, -1);
1818
}
1919

20-
@ConstructorProperties({"uuid", "name", "total_kills", "daily_kills", "monthly_kills", "yearly_kills", "deaths", "last_updated"})
20+
@ConstructorProperties({"uuid", "name", "kills", "daily_kills", "monthly_kills", "yearly_kills", "deaths", "last_updated"})
2121
public KDUserData(UUID uuid, String name, int totalKills, int dailyKills, int monthlyKills, int yearlyKills, int deaths, long lastUpdated) {
2222
this.uuid = uuid;
2323
this.name = name;

src/main/resources/queries/migrations/mysql/V1__initial_schema.sql

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

0 commit comments

Comments
 (0)