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

37 lines
912 B
Java

package org.mercury_im.messenger.core.repository;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
import org.mercury_im.messenger.core.util.Optional;
import java.util.List;
import io.reactivex.Completable;
import io.reactivex.Maybe;
import io.reactivex.Observable;
import io.reactivex.Single;
public interface AccountRepository<
AC extends Account<AD, ?>,
AD extends Address.UserAddress> {
Single<AC> insertAccount(AC account);
Observable<Optional<AC>> observeAccount(long accountId);
Maybe<AC> getAccount(long accountId);
Observable<Optional<AC>> observeAccountByAddress(AD address);
Maybe<AC> getAccountByAddress(AD address);
Observable<List<AC>> observeAllAccounts();
Single<AC> updateAccount(AC account);
Single<AC> upsertAccount(AC account);
Completable deleteAccount(AC account);
}