38 lines
987 B
Java
38 lines
987 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;
|
|
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);
|
|
}
|