Traverse/src/main/java/mc/unraveled/reforged/storage/DBGroup.java

112 lines
4.2 KiB
Java

package mc.unraveled.reforged.storage;
import mc.unraveled.reforged.permission.Rank;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class DBGroup {
private Connection connection;
public DBGroup(Connection connection) {
this.connection = connection;
}
public void createTable(Rank rank) {
try (PreparedStatement statement = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS " + rank.getAttachment().getName() + " (uuid VARCHAR(36), permissions VARCHAR(64));")) {
statement.execute();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to create table: " + e.getMessage());
}
}
public void addPermission(Rank rank, String permission) {
try (PreparedStatement statement = getConnection().prepareStatement("INSERT INTO " + rank.getAttachment().getName() + " (permissions) VALUES (?);")) {
statement.setString(1, permission);
statement.executeUpdate();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to add permission: " + e.getMessage());
}
}
public void removePermission(Rank rank, String permission) {
try (PreparedStatement statement = getConnection().prepareStatement("DELETE FROM " + rank.getAttachment().getName() + " WHERE permissions = ?;")) {
statement.setString(1, permission);
statement.executeUpdate();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to remove permission: " + e.getMessage());
}
}
public List<String> getPermissions(Rank rank) {
List<String> permissions = new ArrayList<>();
try (PreparedStatement statement = getConnection().prepareStatement("SELECT permissions FROM " + rank.getAttachment().getName() + ";")) {
ResultSet rs = statement.executeQuery();
while (rs.next()) {
permissions.add(rs.getString("permissions"));
}
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to get permissions: " + e.getMessage());
}
return permissions;
}
public void addPlayer(@NotNull Rank rank, @NotNull OfflinePlayer player) {
try (PreparedStatement statement = getConnection().prepareStatement("INSERT INTO " + rank.getAttachment().getName() + " (uuid) VALUES (?);")) {
statement.setString(1, player.getUniqueId().toString());
statement.executeUpdate();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to add player: " + e.getMessage());
}
}
public void removePlayer(@NotNull Rank rank, @NotNull OfflinePlayer player) {
try (PreparedStatement statement = getConnection().prepareStatement("DELETE FROM " + rank.getAttachment().getName() + " WHERE uuid = ?;")) {
statement.setString(1, player.getUniqueId().toString());
statement.executeUpdate();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to remove player: " + e.getMessage());
}
}
public List<UUID> getPlayers(Rank rank) {
List<UUID> players = new ArrayList<>();
try (PreparedStatement statement = getConnection().prepareStatement("SELECT uuid FROM " + rank.getAttachment().getName() + ";")) {
ResultSet rs = statement.executeQuery();
while (rs.next()) {
UUID uuid = UUID.fromString(rs.getString("uuid"));
players.add(uuid);
}
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to get players: " + e.getMessage());
}
return players;
}
public void close() {
try {
getConnection().close();
} catch (SQLException e) {
Bukkit.getLogger().severe("Failed to close connection: " + e.getMessage());
}
}
public void open(Connection connection) {
this.connection = connection;
}
public Connection getConnection() {
return connection;
}
}