|
1 | 1 | package com.github.elic0de.thejpspit.database; |
2 | 2 |
|
3 | 3 | import com.github.elic0de.thejpspit.TheJpsPit; |
| 4 | +import com.github.elic0de.thejpspit.config.PitPreferences; |
4 | 5 | import com.github.elic0de.thejpspit.player.OfflinePitPlayer; |
5 | 6 | import com.github.elic0de.thejpspit.player.PitPlayer; |
6 | 7 | import java.io.File; |
|
13 | 14 | import java.sql.ResultSet; |
14 | 15 | import java.sql.SQLException; |
15 | 16 | import java.sql.Statement; |
16 | | -import java.util.Locale; |
17 | 17 | import java.util.Map; |
18 | 18 | import java.util.Optional; |
19 | 19 | import java.util.UUID; |
20 | 20 | import java.util.concurrent.CompletableFuture; |
21 | 21 | import java.util.logging.Level; |
22 | | -import java.util.stream.Collectors; |
23 | | -import java.util.stream.Stream; |
24 | 22 | import org.bukkit.Bukkit; |
25 | 23 | import org.bukkit.entity.Player; |
26 | 24 | import org.sqlite.SQLiteConfig; |
@@ -168,6 +166,23 @@ public Optional<PitPlayer> getPitPlayer(UUID uuid) { |
168 | 166 | return Optional.empty(); |
169 | 167 | } |
170 | 168 |
|
| 169 | + @Override |
| 170 | + public Optional<PitPreferences> getPitPreferences() { |
| 171 | + try (PreparedStatement statement = getConnection().prepareStatement(formatStatementTables(""" |
| 172 | + SELECT `preferences` |
| 173 | + FROM `%pit_preferences%` |
| 174 | + LIMIT 1"""))) { |
| 175 | + final ResultSet resultSet = statement.executeQuery(); |
| 176 | + if (resultSet.next()) { |
| 177 | + final String preferences = new String(resultSet.getBytes("preferences"), StandardCharsets.UTF_8); |
| 178 | + return Optional.of(plugin.getGson().fromJson(preferences, PitPreferences.class)); |
| 179 | + } |
| 180 | + } catch (SQLException e) { |
| 181 | + getLogger().log(Level.SEVERE, "Failed to fetch user data from table by UUID", e); |
| 182 | + } |
| 183 | + return Optional.empty(); |
| 184 | + } |
| 185 | + |
171 | 186 | @Override |
172 | 187 | public Optional<OfflinePitPlayer> getOfflinePitPlayer(UUID uuid) { |
173 | 188 | try (PreparedStatement statement = getConnection().prepareStatement( |
@@ -202,11 +217,11 @@ public CompletableFuture<Optional<Integer>> getPlayerRanking(PitPlayer player, R |
202 | 217 | return CompletableFuture.supplyAsync(() -> { |
203 | 218 | try { |
204 | 219 | String test = """ |
205 | | - SELECT uuid, rank |
206 | | - FROM(SELECT `uuid`, |
207 | | - RANK() |
208 | | - OVER(ORDER BY %type% DESC) |
209 | | - AS rank FROM `%players_table%`) |
| 220 | + SELECT uuid, rank |
| 221 | + FROM(SELECT `uuid`, |
| 222 | + RANK() |
| 223 | + OVER(ORDER BY %type% DESC) |
| 224 | + AS rank FROM `%players_table%`) |
210 | 225 | WHERE `uuid`=?; |
211 | 226 | """; |
212 | 227 | try (PreparedStatement statement = getConnection().prepareStatement( |
@@ -245,6 +260,23 @@ public void createPitPlayer(Player player) { |
245 | 260 | } |
246 | 261 | } |
247 | 262 |
|
| 263 | + @Override |
| 264 | + public void createPitPreferences(PitPreferences pitPreferences) { |
| 265 | + try { |
| 266 | + try (PreparedStatement statement = getConnection().prepareStatement( |
| 267 | + formatStatementTables(""" |
| 268 | + INSERT INTO `%pit_preferences%` (`username`) |
| 269 | + VALUES (?);"""))) { |
| 270 | + |
| 271 | + statement.setBytes(1, plugin.getGson().toJson(pitPreferences).getBytes(StandardCharsets.UTF_8)); |
| 272 | + statement.executeUpdate(); |
| 273 | + } |
| 274 | + } catch (SQLException e) { |
| 275 | + getLogger().log(Level.SEVERE, |
| 276 | + "Failed to insert a player into the database", e); |
| 277 | + } |
| 278 | + } |
| 279 | + |
248 | 280 | @Override |
249 | 281 | public void updateUserData(PitPlayer player) { |
250 | 282 | try { |
|
0 commit comments