package com.raizlabs.android.dbflow.rx2.structure; import com.raizlabs.android.dbflow.config.FlowManager; import com.raizlabs.android.dbflow.structure.RetrievalAdapter; import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper; import java.util.concurrent.Callable; import io.reactivex.Completable; import io.reactivex.Single; /** * Description: Mirrors the {@link RetrievalAdapter} with subset of exposed methods, mostly for * {@link #load(Object)} and {@link #exists(Object)} */ public class RXRetrievalAdapter<TModel> { public static <T> RXRetrievalAdapter<T> from(RetrievalAdapter<T> modelAdapter) { return new RXRetrievalAdapter<>(modelAdapter); } public static <T> RXRetrievalAdapter<T> from(Class<T> table) { return new RXRetrievalAdapter<>(table); } private final RetrievalAdapter<TModel> retrievalAdapter; RXRetrievalAdapter(RetrievalAdapter<TModel> retrievalAdapter) { this.retrievalAdapter = retrievalAdapter; } RXRetrievalAdapter(Class<TModel> table) { this(FlowManager.getInstanceAdapter(table)); } public Completable load(final TModel model) { return Completable.fromCallable(new Callable<Void>() { @Override public Void call() throws Exception { retrievalAdapter.load(model); return null; } }); } public Completable load(final TModel model, final DatabaseWrapper databaseWrapper) { return Completable.fromCallable(new Callable<Void>() { @Override public Void call() throws Exception { retrievalAdapter.load(model, databaseWrapper); return null; } }); } /** * @param model The model to query values from * @return True if it exists as a row in the corresponding database table */ public Single<Boolean> exists(final TModel model) { return Single.fromCallable(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return retrievalAdapter.exists(model); } }); } public Single<Boolean> exists(final TModel model, final DatabaseWrapper wrapper) { return Single.fromCallable(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return retrievalAdapter.exists(model, wrapper); } }); } }