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

  1. package de.fd.fh.server.game;
  2. import com.mongodb.MongoClient;
  3. import de.fd.fh.server.user.UserId;
  4. import dev.morphia.Datastore;
  5. import dev.morphia.Key;
  6. import dev.morphia.Morphia;
  7. import dev.morphia.query.Query;
  8. import java.util.List;
  9. public class GameRepository
  10. {
  11. private final Datastore datastore;
  12. public GameRepository()
  13. {
  14. System.out.println("GameRepo");
  15. final Morphia morphia = new Morphia();
  16. morphia.mapPackage("de.fd.fh.server.game");
  17. this.datastore = morphia.createDatastore(new MongoClient(), "smartwarfare");
  18. datastore.ensureIndexes();
  19. }
  20. GameRepository(final Datastore datastore)
  21. {
  22. this.datastore = datastore;
  23. }
  24. public Key<Game> save(final Game access)
  25. {
  26. return datastore.save(access);
  27. }
  28. Game findByGameId(final GameId gameId)
  29. {
  30. return datastore.createQuery(Game.class)
  31. .field("id.identifier").equal(gameId.getIdentifier()).first();
  32. }
  33. List<Game> findRunningGamesOfPlayer(final UserId userId)
  34. {
  35. final Query<Game> query = datastore.createQuery(Game.class);
  36. query.or(
  37. query.criteria("whitePlayer.identifier").equal(userId.getIdentifier()),
  38. query.criteria("blackPlayer.identifier").equal(userId.getIdentifier()));
  39. query.and(query.criteria("winner").doesNotExist());
  40. return query.find().toList();
  41. }
  42. }