mirror of
https://github.com/plexusorg/Plex.git
synced 2025-06-29 06:46:43 +00:00
fix NPE and codec issues
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import com.mongodb.ConnectionString;
|
||||
import com.mongodb.MongoClientOptions;
|
||||
import com.mongodb.MongoClientSettings;
|
||||
import com.mongodb.client.MongoClient;
|
||||
import com.mongodb.client.MongoClients;
|
||||
import dev.morphia.Datastore;
|
||||
@ -7,7 +10,9 @@ import dev.morphia.Morphia;
|
||||
import dev.morphia.mapping.MapperOptions;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.storage.codec.ZonedDateTimeCodec;
|
||||
import dev.plex.util.PlexLog;
|
||||
import org.bson.codecs.configuration.CodecRegistries;
|
||||
|
||||
public class MongoConnection implements PlexBase
|
||||
{
|
||||
@ -42,7 +47,7 @@ public class MongoConnection implements PlexBase
|
||||
connectionString = "mongodb://" + host + ":" + port + "/?uuidRepresentation=STANDARD";
|
||||
}
|
||||
PlexLog.debug("Using mongo connection string: " + connectionString);
|
||||
MongoClient client = MongoClients.create(connectionString);
|
||||
MongoClient client = MongoClients.create(MongoClientSettings.builder().codecRegistry(CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), CodecRegistries.fromCodecs(new ZonedDateTimeCodec()))).applyConnectionString(new ConnectionString(connectionString)).build());
|
||||
Datastore datastore = Morphia.createDatastore(client, database == null ? "admin" : database, MapperOptions.DEFAULT);
|
||||
datastore.getMapper().map(PlexPlayer.class);
|
||||
datastore.ensureIndexes();
|
||||
|
@ -0,0 +1,39 @@
|
||||
package dev.plex.storage.codec;
|
||||
|
||||
import org.bson.BsonReader;
|
||||
import org.bson.BsonWriter;
|
||||
import org.bson.codecs.Codec;
|
||||
import org.bson.codecs.DecoderContext;
|
||||
import org.bson.codecs.EncoderContext;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
import static dev.plex.util.TimeUtils.TIMEZONE;
|
||||
|
||||
/**
|
||||
* @author Taah
|
||||
* @project Plex
|
||||
* @since 6:53 PM [28-05-2022]
|
||||
*/
|
||||
public class ZonedDateTimeCodec implements Codec<ZonedDateTime>
|
||||
{
|
||||
@Override
|
||||
public ZonedDateTime decode(BsonReader reader, DecoderContext decoderContext)
|
||||
{
|
||||
return ZonedDateTime.ofInstant(Instant.ofEpochMilli(reader.readDateTime()), ZoneId.of(TIMEZONE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode(BsonWriter writer, ZonedDateTime value, EncoderContext encoderContext)
|
||||
{
|
||||
writer.writeDateTime(value.toInstant().toEpochMilli());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ZonedDateTime> getEncoderClass()
|
||||
{
|
||||
return ZonedDateTime.class;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user