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.

52 lines
1.2 KiB

  1. package de.fd.fh.server.user;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.WriteResult;
  4. import dev.morphia.Datastore;
  5. import dev.morphia.Key;
  6. import dev.morphia.Morphia;
  7. public class UserRepository {
  8. private final Datastore datastore;
  9. public UserRepository()
  10. {
  11. System.out.println("UserRepo");
  12. final Morphia morphia = new Morphia();
  13. morphia.mapPackage("de.fd.fh.server.user");
  14. this.datastore = morphia.createDatastore(new MongoClient(), "smartwarfare");
  15. datastore.ensureIndexes();
  16. }
  17. UserRepository(Datastore datastore)
  18. {
  19. this.datastore = datastore;
  20. }
  21. public Key<User> save(final User user)
  22. {
  23. return datastore.save(user);
  24. }
  25. public User findUserById(final UserId userId)
  26. {
  27. return datastore.createQuery(User.class)
  28. .field("_id.identifier").equal(userId.getIdentifier())
  29. .first();
  30. }
  31. public User findUserByName(final String name)
  32. {
  33. return datastore.createQuery(User.class)
  34. .field("name").equal(name)
  35. .first();
  36. }
  37. WriteResult deleteUserById(final UserId userId)
  38. {
  39. return datastore.delete(findUserById(userId));
  40. }
  41. }