Plex/server/src/main/java/dev/plex/storage/MongoConnection.java

57 lines
2.4 KiB
Java
Raw Normal View History

2021-01-03 07:21:15 +00:00
package dev.plex.storage;
2022-05-29 02:12:18 +00:00
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
2020-10-28 04:47:02 +00:00
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
2020-10-28 03:49:56 +00:00
import dev.morphia.Datastore;
import dev.morphia.Morphia;
2020-10-28 04:47:02 +00:00
import dev.morphia.mapping.MapperOptions;
2022-03-03 23:24:15 +00:00
import dev.plex.PlexBase;
2021-01-03 07:21:15 +00:00
import dev.plex.player.PlexPlayer;
2022-05-29 02:12:18 +00:00
import dev.plex.storage.codec.ZonedDateTimeCodec;
2022-04-07 07:37:31 +00:00
import dev.plex.util.PlexLog;
2022-05-29 02:12:18 +00:00
import org.bson.codecs.configuration.CodecRegistries;
2022-04-17 05:27:04 +00:00
public class MongoConnection implements PlexBase
{
// USE MORPHIA API FOR MONGO <3
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");
2022-04-07 07:37:31 +00:00
String connectionString;
if (username != null && password != null && !username.isEmpty() && !password.isEmpty())
{
if (database != null && !database.isEmpty())
{
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?authSource=" + database + "&uuidRepresentation=STANDARD";
2022-04-09 05:08:03 +00:00
}
else
{
connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?uuidRepresentation=STANDARD";
2022-04-07 07:37:31 +00:00
}
2022-04-09 05:08:03 +00:00
}
else
{
connectionString = "mongodb://" + host + ":" + port + "/?uuidRepresentation=STANDARD";
2022-04-07 07:37:31 +00:00
}
PlexLog.debug("Using mongo connection string: " + connectionString);
2022-05-29 02:12:18 +00:00
MongoClient client = MongoClients.create(MongoClientSettings.builder().codecRegistry(CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), CodecRegistries.fromCodecs(new ZonedDateTimeCodec()))).applyConnectionString(new ConnectionString(connectionString)).build());
2022-04-07 07:37:31 +00:00
Datastore datastore = Morphia.createDatastore(client, database == null ? "admin" : database, MapperOptions.DEFAULT);
2020-10-28 04:47:02 +00:00
datastore.getMapper().map(PlexPlayer.class);
datastore.ensureIndexes();
2021-01-03 07:21:15 +00:00
plugin.setStorageType(StorageType.MONGODB);
return datastore;
}
}