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.

58 lines
1.5 KiB

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