All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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