· 5 years ago · Aug 16, 2020, 09:50 PM
1package com.ignitedev.ignitelobbyranks.database;
2
3
4import com.ignitedev.ignitelobbyranks.IgniteLobbyRanks;
5import com.ignitedev.ignitelobbyranks.objects.enums.RankEnum;
6import com.zaxxer.hikari.HikariDataSource;
7import org.bukkit.entity.Player;
8
9import java.sql.*;
10
11
12public class MySQLDatabase {
13
14 private final HikariDataSource hikariDataSource = IgniteLobbyRanks.getInst().getHikariDataSource();
15
16 public void checkTable() throws SQLException {
17
18 try(Connection connection = hikariDataSource.getConnection()) {
19 Statement stm = connection.createStatement();
20 stm.executeUpdate(
21 "create table if not exists LobbyRankPlayers" +
22 " (uuid varchar(36) not null primary key," +
23 " rank varchar(15));"
24 );
25 stm.close();
26 }
27 }
28
29 public boolean playerExists(Player p) throws SQLException {
30
31 try(Connection connection = hikariDataSource.getConnection()) {
32 PreparedStatement sql = connection.prepareStatement("select uuid from LobbyRankPlayers where uuid = ?");
33 sql.setString(1, p.getUniqueId().toString());
34 ResultSet rs = sql.executeQuery();
35 rs.beforeFirst();
36 boolean hasEntry = rs.next();
37 rs.close();
38 return hasEntry;
39 }
40 }
41
42 public void createPlayer(Player p) throws SQLException {
43
44 try(Connection connection = hikariDataSource.getConnection()) {
45 PreparedStatement sql = connection.prepareStatement("insert ignore into LobbyRankPlayers values(?, ?)");
46 sql.setString(1, p.getUniqueId().toString());
47 sql.setString(2, RankEnum.PLAYER.toString());
48 sql.execute();
49 sql.close();
50 }
51 }
52
53 public void savePlayer(Player p, RankEnum rankEnum) throws SQLException {
54
55 try(Connection connection = hikariDataSource.getConnection()) {
56 PreparedStatement sql = connection.prepareStatement("UPDATE LobbyRankPlayers set rank = ? where uuid = ?");
57 sql.setString(1, rankEnum.toString());
58 sql.setString(2, p.getUniqueId().toString());
59 sql.execute();
60 sql.close();
61 }
62 }
63
64 public RankEnum getPlayerRank(Player p) throws SQLException {
65
66 if(playerExists(p)) {
67 try(Connection connection = hikariDataSource.getConnection()) {
68 PreparedStatement sql = connection.prepareStatement("select rank from LobbyRankPlayers where uuid = ?");
69 sql.setString(1, p.getUniqueId().toString());
70 ResultSet rs = sql.executeQuery();
71 rs.beforeFirst();
72 rs.next();
73 RankEnum rankEnum = RankEnum.valueOf(rs.getString("rank"));
74 rs.close();
75 return rankEnum;
76 }
77 }
78 return null;
79 }
80
81}