56 lines
1.5 KiB
Java
56 lines
1.5 KiB
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.DirectChat;
|
|
import org.mercury_im.messenger.core.entity.Interlocutor;
|
|
import org.mercury_im.messenger.core.entity.Message;
|
|
import org.mercury_im.messenger.core.entity.MessageMetadata;
|
|
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 DirectChatRepository<
|
|
DC extends DirectChat<IL, AC, AD>,
|
|
IL extends Interlocutor<AC, AD>,
|
|
AC extends Account<AD, ?>,
|
|
AD extends Address.UserAddress,
|
|
M extends Message<AD, MM>,
|
|
MM extends MessageMetadata> {
|
|
|
|
Single<DC> insertDirectChat(DC chat);
|
|
|
|
Observable<Optional<DC>> observeDirectChat(long chatId);
|
|
|
|
Maybe<DC> getDirectChat(long chatId);
|
|
|
|
Observable<Optional<DC>> observeDirectChatByInterlocutor(IL interlocutor);
|
|
|
|
Maybe<DC> getDirectChatByInterlocutor(IL interlocutor);
|
|
|
|
Observable<List<DC>> observeAllDirectChats();
|
|
|
|
Single<DC> updateDirectChat(DC chat);
|
|
|
|
Single<DC> upsertDirectChat(DC chat);
|
|
|
|
Completable deleteDirectChat(DC chat);
|
|
|
|
// Messages
|
|
|
|
Single<M> insertMessage(DC chat, M message);
|
|
|
|
Observable<List<M>> observeMessages(DC chat);
|
|
|
|
Single<M> updateMessage(M message);
|
|
|
|
Single<M> upsertMessage(DC chat, M message);
|
|
|
|
Completable deleteMessage(M message);
|
|
}
|