Mercury-IM/persistence/src/main/java/org/mercury_im/messenger/persistence/repository/AccountRepository.java

51 lines
1.9 KiB
Java

package org.mercury_im.messenger.persistence.repository;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.entity.AccountModel;
import org.mercury_im.messenger.thread_utils.ThreadUtils;
import javax.inject.Inject;
import javax.inject.Named;
import io.reactivex.Completable;
import io.reactivex.Observable;
import io.reactivex.Scheduler;
import io.requery.Persistable;
import io.requery.reactivex.ReactiveEntityStore;
import io.requery.reactivex.ReactiveResult;
public class AccountRepository extends AbstractRepository<AccountModel> {
@Inject
public AccountRepository(ReactiveEntityStore<Persistable> data,
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler subscriberScheduler,
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler observerScheduler) {
super(AccountModel.class, data, subscriberScheduler, observerScheduler);
}
public Observable<ReactiveResult<AccountModel>> getAccountByJid(EntityBareJid jid) {
return data().select(AccountModel.class)
.where(AccountModel.JID.eq(jid))
.get()
.observableResult()
.subscribeOn(subscriberScheduler())
.observeOn(observerScheduler());
}
public Observable<ReactiveResult<AccountModel>> getAccount(long accountId) {
return data().select(AccountModel.class).where(AccountModel.ID.eq(accountId))
.get().observableResult()
.subscribeOn(subscriberScheduler()).observeOn(observerScheduler());
}
public Completable delete(long accountId) {
return data().delete(AccountModel.class)
.where(AccountModel.ID.eq(accountId))
.get()
.single()
.ignoreElement()
.subscribeOn(subscriberScheduler())
.observeOn(observerScheduler());
}
}