mirror of
https://github.com/plexusorg/Plex.git
synced 2025-06-29 14:56:43 +00:00
tttt
This commit is contained in:
39
src/main/java/dev/plex/storage/MongoConnection.java
Normal file
39
src/main/java/dev/plex/storage/MongoConnection.java
Normal file
@ -0,0 +1,39 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import com.mongodb.client.MongoClient;
|
||||
import com.mongodb.client.MongoClients;
|
||||
import dev.morphia.Datastore;
|
||||
import dev.morphia.Morphia;
|
||||
import dev.morphia.mapping.MapperOptions;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.banning.Ban;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
|
||||
public class MongoConnection
|
||||
{
|
||||
// USE MORPHIA API FOR MONGO <3
|
||||
|
||||
private final Plex plugin = Plex.get();
|
||||
|
||||
public Datastore getDatastore()
|
||||
{
|
||||
if (!plugin.config.getString("data.central.storage").equalsIgnoreCase("mongodb"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String host = plugin.config.getString("data.central.hostname");
|
||||
int port = plugin.config.getInt("data.central.port");
|
||||
String username = plugin.config.getString("data.central.user");
|
||||
String password = plugin.config.getString("data.central.password");
|
||||
String database = plugin.config.getString("data.central.db");
|
||||
|
||||
String connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?authSource=" + database;
|
||||
MongoClient client = MongoClients.create(connectionString);
|
||||
Datastore datastore = Morphia.createDatastore(client, database, MapperOptions.DEFAULT);
|
||||
datastore.getMapper().map(PlexPlayer.class);
|
||||
datastore.getMapper().map(Ban.class);
|
||||
datastore.ensureIndexes();
|
||||
plugin.setStorageType(StorageType.MONGODB);
|
||||
return datastore;
|
||||
}
|
||||
}
|
32
src/main/java/dev/plex/storage/RedisConnection.java
Normal file
32
src/main/java/dev/plex/storage/RedisConnection.java
Normal file
@ -0,0 +1,32 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import redis.clients.jedis.JedisPoolConfig;
|
||||
|
||||
public class RedisConnection
|
||||
{
|
||||
private JedisPool pool;
|
||||
private Jedis jedis;
|
||||
|
||||
public JedisPool openPool()
|
||||
{
|
||||
ClassLoader previous = Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(RedisConnection.class.getClassLoader());
|
||||
this.pool = new JedisPool(new JedisPoolConfig(), Plex.get().getConfig().getString("data.side.hostname"), Plex.get().getConfig().getInt("data.side.port"));
|
||||
Thread.currentThread().setContextClassLoader(previous);
|
||||
return pool;
|
||||
}
|
||||
|
||||
public Jedis getJedis()
|
||||
{
|
||||
this.jedis = pool.getResource();
|
||||
if (Plex.get().getConfig().getBoolean("data.side.auth"))
|
||||
{
|
||||
jedis.auth(Plex.get().getConfig().getString("data.side.password"));
|
||||
}
|
||||
return jedis;
|
||||
}
|
||||
|
||||
}
|
72
src/main/java/dev/plex/storage/SQLConnection.java
Normal file
72
src/main/java/dev/plex/storage/SQLConnection.java
Normal file
@ -0,0 +1,72 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.PlexBase;
|
||||
import java.io.File;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class SQLConnection extends PlexBase
|
||||
{
|
||||
private Connection connection;
|
||||
|
||||
public Connection getCon()
|
||||
{
|
||||
String host = plugin.config.getString("data.central.hostname");
|
||||
int port = plugin.config.getInt("data.central.port");
|
||||
String username = plugin.config.getString("data.central.user");
|
||||
String password = plugin.config.getString("data.central.password");
|
||||
String database = plugin.config.getString("data.central.db");
|
||||
try
|
||||
{
|
||||
if (plugin.config.getString("data.central.storage").equalsIgnoreCase("sqlite"))
|
||||
{
|
||||
connection = DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath());
|
||||
plugin.setStorageType(StorageType.SQLITE);
|
||||
}
|
||||
else if (plugin.config.getString("data.central.storage").equalsIgnoreCase("mariadb"))
|
||||
{
|
||||
Class.forName("org.mariadb.jdbc.Driver");
|
||||
connection = DriverManager.getConnection("jdbc:mariadb://" + host + ":" + port + "/" + database, username, password);
|
||||
Plex.get().setStorageType(StorageType.MARIADB);
|
||||
}
|
||||
}
|
||||
catch (SQLException | ClassNotFoundException throwables)
|
||||
{
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (connection != null)
|
||||
{
|
||||
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `players` (" +
|
||||
"`uuid` VARCHAR(46) NOT NULL, " +
|
||||
"`name` VARCHAR(18), " +
|
||||
"`login_msg` VARCHAR(70), " +
|
||||
"`prefix` VARCHAR(45), " +
|
||||
"`rank` VARCHAR(20), " +
|
||||
"`ips` VARCHAR(2000), " +
|
||||
"`coins` BIGINT, " +
|
||||
"`vanished` BOOLEAN, " +
|
||||
"PRIMARY KEY (`uuid`));").execute();
|
||||
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `bans` (" +
|
||||
"`banID` VARCHAR(46)," +
|
||||
" `uuid` VARCHAR(46) NOT NULL," +
|
||||
" `banner` VARCHAR(46)," +
|
||||
"`ip` VARCHAR(2000)," +
|
||||
" `reason` VARCHAR(256)," +
|
||||
" `enddate` BIGINT," +
|
||||
" `active` BOOLEAN," +
|
||||
" PRIMARY KEY (`banID`)" +
|
||||
");").execute();
|
||||
}
|
||||
}
|
||||
catch (SQLException throwables)
|
||||
{
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
return connection;
|
||||
}
|
||||
}
|
6
src/main/java/dev/plex/storage/StorageType.java
Normal file
6
src/main/java/dev/plex/storage/StorageType.java
Normal file
@ -0,0 +1,6 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
public enum StorageType
|
||||
{
|
||||
MONGODB, MARIADB, SQLITE
|
||||
}
|
Reference in New Issue
Block a user