package de.fd.fh.server.game; import com.mongodb.MongoClient; import de.fd.fh.server.user.UserId; import dev.morphia.Datastore; import dev.morphia.Key; import dev.morphia.Morphia; import dev.morphia.query.Query; import java.util.List; public class GameRepository { private final Datastore datastore; public GameRepository() { System.out.println("GameRepo"); final Morphia morphia = new Morphia(); morphia.mapPackage("de.fd.fh.server.game"); this.datastore = morphia.createDatastore(new MongoClient(), "smartwarfare"); datastore.ensureIndexes(); } GameRepository(final Datastore datastore) { this.datastore = datastore; } public Key save(final Game access) { return datastore.save(access); } Game findByGameId(final GameId gameId) { return datastore.createQuery(Game.class) .field("id.identifier").equal(gameId.getIdentifier()).first(); } List findRunningGamesOfPlayer(final UserId userId) { final Query query = datastore.createQuery(Game.class); query.or( query.criteria("whitePlayer.identifier").equal(userId.getIdentifier()), query.criteria("blackPlayer.identifier").equal(userId.getIdentifier())); query.and(query.criteria("winner").doesNotExist()); return query.find().toList(); } }