
de.comhix.twitch.database.dao.BaseDao Maven / Gradle / Ivy
package de.comhix.twitch.database.dao;
import de.comhix.twitch.database.objects.DatabaseObject;
import io.reactivex.Completable;
import io.reactivex.Maybe;
import io.reactivex.Single;
import io.reactivex.schedulers.Schedulers;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import javax.inject.Inject;
/**
* @author Benjamin Beeker
*/
public class BaseDao implements SimpleDao {
private final Datastore datastore;
@Inject
public BaseDao(Datastore datastore) {
this.datastore = datastore;
}
public Maybe get(String id, Class typeClass) {
return Maybe.fromCallable(() -> datastore.get(typeClass, id))
.subscribeOn(Schedulers.io());
}
public Single save(Type object) {
return Single.fromCallable(() -> {
Key key = datastore.save(object);
//noinspection unchecked
return datastore.getByKey((Class) object.getClass(), key);
}).subscribeOn(Schedulers.io());
}
public Completable delete(String id, Class typeClass) {
return Completable.fromCallable(() -> datastore.delete(typeClass, id))
.subscribeOn(Schedulers.io());
}
public Query query(Class typeClass) {
return new Query<>(typeClass, datastore);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy