
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.Observable;
import io.reactivex.schedulers.Schedulers;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import javax.inject.Inject;
import java.util.Optional;
/**
* @author Benjamin Beeker
*/
public class BaseDao implements SimpleDao {
private final Datastore datastore;
@Inject
public BaseDao(Datastore datastore) {
this.datastore = datastore;
}
public Observable> get(String id, Class typeClass) {
return Observable.fromCallable(() -> Optional.ofNullable(datastore.get(typeClass, id))).
subscribeOn(Schedulers.io());
}
public Observable save(Type object) {
return Observable.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