Skip to content

Commit 31c7d8f

Browse files
committed
Database connection. Only PostgreSQL and SQLite.
1 parent defbe07 commit 31c7d8f

8 files changed

Lines changed: 63 additions & 3 deletions

File tree

src/main/java/com/unfamoussoul/test/Test.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.unfamoussoul.test;
22

33
import com.unfamoussoul.sapi.SAPI;
4+
import com.unfamoussoul.sapi.api.database.DatabaseConfig;
45
import com.unfamoussoul.sapi.api.serialize.Persistent;
56
import com.unfamoussoul.sapi.module.SAPIModule;
67
import com.unfamoussoul.test.command.RememberCommand;
78
import com.unfamoussoul.test.command.RemindCommand;
89
import com.unfamoussoul.test.command.TestCommand;
910
import com.unfamoussoul.test.config.Config;
11+
import com.unfamoussoul.test.database.TestDatabaseHandler;
1012
import com.unfamoussoul.test.listener.EventListener;
1113
import com.unfamoussoul.test.web.Web;
1214

@@ -16,6 +18,7 @@
1618
public class Test extends SAPIModule {
1719

1820
private Config config;
21+
private TestDatabaseHandler databaseHandler;
1922

2023
@Persistent(value = "player_phrases")
2124
private final Map<UUID, List<String>> playerPhrases = new HashMap<>();
@@ -35,6 +38,9 @@ public void onEnable() {
3538
addCommand(new RemindCommand(this));
3639
addListener(new EventListener(this));
3740
addWebListener(new Web(this), config.webPort);
41+
DatabaseConfig databaseConfig = DatabaseConfig.forSqlite(config.databaseJDBC);
42+
databaseHandler = new TestDatabaseHandler(databaseConfig);
43+
addDatabaseHandler(databaseHandler);
3844
getLogger().warning("test---");
3945
}
4046

@@ -43,6 +49,10 @@ public void onDisable() {
4349
getLogger().warning("test+++");
4450
}
4551

52+
public TestDatabaseHandler getDatabaseHandler() {
53+
return databaseHandler;
54+
}
55+
4656
public void addPhrase(UUID playerId, String phrase) {
4757
playerPhrases.computeIfAbsent(playerId, k -> new ArrayList<>()).add(phrase);
4858
}

src/main/java/com/unfamoussoul/test/config/Config.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class Config {
1616
public final int webThreadsIdle;
1717
public final int webThreadsEvict;
1818

19+
public final String databaseJDBC;
20+
1921
public Config(@NotNull ConfigHandler configHandler) {
2022
FileConfiguration cfg = configHandler.getConfig();
2123

@@ -28,5 +30,7 @@ public Config(@NotNull ConfigHandler configHandler) {
2830
webThreadsQueued = cfg.getInt("web.threads.queued");
2931
webThreadsIdle = cfg.getInt("web.threads.idle");
3032
webThreadsEvict = cfg.getInt("web.threads.evict");
33+
34+
databaseJDBC = cfg.getString("database.jdbc");
3135
}
3236
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.unfamoussoul.test.database;
2+
3+
import com.unfamoussoul.sapi.api.database.DatabaseConfig;
4+
import com.unfamoussoul.sapi.api.database.DatabaseHandler;
5+
import com.unfamoussoul.sapi.api.database.Migration;
6+
7+
import java.sql.Connection;
8+
import java.sql.PreparedStatement;
9+
import java.sql.SQLException;
10+
import java.util.List;
11+
12+
public class TestDatabaseHandler extends DatabaseHandler {
13+
14+
public TestDatabaseHandler(DatabaseConfig config) {
15+
super(
16+
config,
17+
List.of(
18+
new Migration(1, c -> c.createStatement()
19+
.execute("CREATE TABLE logbook (id INTEGER PRIMARY KEY, route TEXT)")),
20+
new Migration(2, c -> c.createStatement()
21+
.execute("ALTER TABLE logbook ADD COLUMN ip TEXT"))
22+
)
23+
);
24+
}
25+
26+
public void addLog(String route, String ip) {
27+
try (Connection conn = connection()) {
28+
29+
try (PreparedStatement ps = conn.prepareStatement("INSERT INTO logbook (route, ip) VALUES (?, ?)")) {
30+
ps.setString(1, route);
31+
ps.setString(2, ip);
32+
ps.executeUpdate();
33+
}
34+
35+
} catch (SQLException _) {
36+
//
37+
}
38+
}
39+
}

src/main/java/com/unfamoussoul/test/web/route/RemindersRoute.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.unfamoussoul.test.Test;
44
import io.javalin.http.Context;
5-
import org.bukkit.Bukkit;
65
import org.bukkit.OfflinePlayer;
76
import org.jetbrains.annotations.NotNull;
87

@@ -27,6 +26,7 @@ public void getAll(@NotNull Context ctx) {
2726
payload.put("count", phrases.size());
2827
payload.put("data", phrases);
2928

29+
module.getDatabaseHandler().addLog("/reminders", ctx.ip());
3030
ctx.json(payload);
3131
}
3232

@@ -41,11 +41,12 @@ public void getByNickname(@NotNull Context ctx) {
4141
payload.put("count", phrases.size());
4242
payload.put("data", phrases);
4343

44+
module.getDatabaseHandler().addLog("/reminders/" + nickname, ctx.ip());
4445
ctx.json(payload);
4546
}
4647

4748
private @NotNull UUID resolveUuid(String nickname) {
48-
OfflinePlayer player = Bukkit.getOfflinePlayer(nickname);
49+
OfflinePlayer player = module.getPlugin().getServer().getOfflinePlayer(nickname);
4950
return player.getUniqueId();
5051
}
5152
}

src/main/java/com/unfamoussoul/test/web/route/ServerRoute.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public void getOnline(Context ctx) {
2929
payload.put("max", module.getPlugin().getServer().getMaxPlayers());
3030
payload.put("names", names);
3131

32+
module.getDatabaseHandler().addLog("/server/online", ctx.ip());
3233
ctx.json(payload);
3334
}
3435
}

src/main/resources/config.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@ web:
88
max: 10
99
queued: 100
1010
idle: 60
11-
evict: 120
11+
evict: 120
12+
13+
database:
14+
jdbc: "jdbc:sqlite:data.db"

src/main/resources/locale/messages_en_US.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
"test.remember.success": "Remembered <0> symbols!"
77
"test.remember.success": "Remembered <0> symbols!",
88
"test.command.textapi_not_loaded": "TextAPI is not loaded!",
9+
"test.database.error": "SQL error: <0>"
910
}

src/main/resources/locale/messages_ru_RU.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
"test.remember.success": "Запомнил <0> символов!"
77
"test.remember.success": "Запомнил <0> символов!",
88
"test.command.textapi_not_loaded": "TextAPI не загружен!",
9+
"test.database.error": "Ошибка SQL: <0>"
910
}

0 commit comments

Comments
 (0)