mirror of
https://github.com/plexusorg/Plex.git
synced 2025-07-17 12:54:03 +00:00
added sql support so now people can use mongo or sql
This commit is contained in:
@@ -13,9 +13,6 @@ import java.util.UUID;
|
||||
public class MongoPlayerData
|
||||
{
|
||||
|
||||
private Map<UUID, PunishedPlayer> punishedPlayerMap = Maps.newHashMap();
|
||||
private Map<UUID, PlexPlayer> plexPlayerMap = Maps.newHashMap();
|
||||
|
||||
private PlexPlayerDAO plexPlayerDAO;
|
||||
|
||||
public MongoPlayerData()
|
||||
@@ -36,9 +33,9 @@ public class MongoPlayerData
|
||||
|
||||
public PlexPlayer getByUUID(UUID uuid) {
|
||||
|
||||
if (plexPlayerMap.containsKey(uuid))
|
||||
if (PlayerCache.getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return plexPlayerMap.get(uuid);
|
||||
return PlayerCache.getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
Query<PlexPlayer> query2 = plexPlayerDAO.createQuery().field("uuid").exists().field("uuid").equal(uuid.toString());
|
||||
return query2.first();
|
||||
@@ -59,15 +56,6 @@ public class MongoPlayerData
|
||||
plexPlayerDAO.update(filter, updateOps);
|
||||
}
|
||||
|
||||
|
||||
public Map<UUID, PlexPlayer> getPlexPlayerMap() {
|
||||
return plexPlayerMap;
|
||||
}
|
||||
|
||||
public Map<UUID, PunishedPlayer> getPunishedPlayerMap() {
|
||||
return punishedPlayerMap;
|
||||
}
|
||||
|
||||
public PlexPlayerDAO getPlexPlayerDAO() {
|
||||
return plexPlayerDAO;
|
||||
}
|
||||
|
23
src/main/java/me/totalfreedom/plex/cache/PlayerCache.java
vendored
Normal file
23
src/main/java/me/totalfreedom/plex/cache/PlayerCache.java
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
package me.totalfreedom.plex.cache;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import me.totalfreedom.plex.player.PlexPlayer;
|
||||
import me.totalfreedom.plex.player.PunishedPlayer;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerCache
|
||||
{
|
||||
|
||||
private static Map<UUID, PlexPlayer> plexPlayerMap = Maps.newHashMap();
|
||||
private static Map<UUID, PunishedPlayer> punishedPlayerMap = Maps.newHashMap();
|
||||
|
||||
public static Map<UUID, PunishedPlayer> getPunishedPlayerMap() {
|
||||
return punishedPlayerMap;
|
||||
}
|
||||
|
||||
public static Map<UUID, PlexPlayer> getPlexPlayerMap() {
|
||||
return plexPlayerMap;
|
||||
}
|
||||
}
|
115
src/main/java/me/totalfreedom/plex/cache/SQLPlayerData.java
vendored
Normal file
115
src/main/java/me/totalfreedom/plex/cache/SQLPlayerData.java
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
package me.totalfreedom.plex.cache;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import dev.morphia.query.Query;
|
||||
import dev.morphia.query.UpdateOperations;
|
||||
import me.totalfreedom.plex.Plex;
|
||||
import me.totalfreedom.plex.player.PlexPlayer;
|
||||
import me.totalfreedom.plex.player.PunishedPlayer;
|
||||
import me.totalfreedom.plex.rank.Rank;
|
||||
|
||||
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.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SQLPlayerData
|
||||
{
|
||||
|
||||
private final String SELECT = "SELECT * FROM `players` WHERE uuid=?";
|
||||
private final String UPDATE = "UPDATE `players` SET name=?, login_msg=?, prefix=?, rank=?, ips=? WHERE uuid=?";
|
||||
private final String INSERT = "INSERT INTO `players` (`uuid`, `name`, `login_msg`, `prefix`, `rank`, `ips`) VALUES (?, ?, ?, ?, ?, ?);";
|
||||
|
||||
public boolean exists(UUID uuid)
|
||||
{
|
||||
try (Connection con = Plex.get().getSqlConnection().getCon())
|
||||
{
|
||||
PreparedStatement statement = con.prepareStatement(SELECT);
|
||||
statement.setString(1, uuid.toString());
|
||||
ResultSet set = statement.executeQuery();
|
||||
return set.next();
|
||||
}
|
||||
catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public PlexPlayer getByUUID(UUID uuid)
|
||||
{
|
||||
if (PlayerCache.getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return PlayerCache.getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
|
||||
try (Connection con = Plex.get().getSqlConnection().getCon())
|
||||
{
|
||||
PreparedStatement statement = con.prepareStatement(SELECT);
|
||||
statement.setString(1, uuid.toString());
|
||||
ResultSet set = statement.executeQuery();
|
||||
PlexPlayer plexPlayer = new PlexPlayer(uuid);
|
||||
while (set.next())
|
||||
{
|
||||
String name = set.getString("name");
|
||||
String loginMSG = set.getString("login_msg");
|
||||
String prefix = set.getString("prefix");
|
||||
String rankName = set.getString("rank").toUpperCase();
|
||||
Rank rank = Rank.valueOf(rankName);
|
||||
List<String> ips = new Gson().fromJson(set.getString("ips"), new TypeToken<List<String>>(){}.getType());
|
||||
plexPlayer.setName(name);
|
||||
plexPlayer.setLoginMSG(loginMSG);
|
||||
plexPlayer.setPrefix(prefix);
|
||||
plexPlayer.setRank(rankName.isEmpty() ? null : rank);
|
||||
plexPlayer.setIps(ips);
|
||||
}
|
||||
return plexPlayer;
|
||||
}
|
||||
catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void update(PlexPlayer player)
|
||||
{
|
||||
try (Connection con = Plex.get().getSqlConnection().getCon())
|
||||
{
|
||||
PreparedStatement statement = con.prepareStatement(UPDATE);
|
||||
statement.setString(1, player.getName());
|
||||
statement.setString(2, player.getLoginMSG());
|
||||
statement.setString(3, player.getPrefix());
|
||||
statement.setString(4, player.getRank() == null ? "" : player.getRank().name().toLowerCase());
|
||||
statement.setString(5, new Gson().toJson(player.getIps()));
|
||||
statement.setString(6, player.getUuid());
|
||||
statement.executeUpdate();
|
||||
}
|
||||
catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void insert(PlexPlayer player)
|
||||
{
|
||||
try (Connection con = Plex.get().getSqlConnection().getCon())
|
||||
{
|
||||
PreparedStatement statement = con.prepareStatement(INSERT);
|
||||
statement.setString(1, player.getUuid());
|
||||
statement.setString(2, player.getName());
|
||||
statement.setString(3, player.getLoginMSG());
|
||||
statement.setString(4, player.getPrefix());
|
||||
statement.setString(5, player.getRank() == null ? "" : player.getRank().name().toLowerCase());
|
||||
statement.setString(6, new Gson().toJson(player.getIps()));
|
||||
statement.execute();
|
||||
}
|
||||
catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user