You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
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<Game> 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<Game> findRunningGamesOfPlayer(final UserId userId)
|
|
{
|
|
final Query<Game> 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();
|
|
}
|
|
}
|