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

38 lines
995 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.entity.contact.Contact;
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 ContactRepository<
AC extends Account<AD, ?>,
AD extends Address.UserAddress,
C extends Contact<AC, AD>> {
Single<C> insertContact(C contact);
Observable<Optional<C>> observeContact(long contactId);
Maybe<C> getContact(long contactId);
Observable<Optional<C>> observeContactByAddress(AD address);
Maybe<C> getContactByAddress(AD address);
Observable<List<C>> observeAllContacts();
Single<C> updateContact(C contact);
Single<C> upsertContact(C contact);
Completable deleteContact(C contact);
}