package org.mercury_im.messenger.core.repository; import org.mercury_im.messenger.core.entity.chat.DirectChat; import org.mercury_im.messenger.core.entity.contact.Peer; import org.mercury_im.messenger.core.entity.message.Message; 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 { Single insertDirectChat(DirectChat chat); Observable> observeDirectChat(long chatId); Maybe getDirectChat(long chatId); Observable> observeDirectChatByInterlocutor(Peer peer); Maybe getDirectChatByInterlocutor(Peer peer); Observable> observeAllDirectChats(); Single updateDirectChat(DirectChat chat); Single upsertDirectChat(DirectChat chat); Completable deleteDirectChat(DirectChat chat); // Messages Single insertMessage(DirectChat chat, Message message); Observable> observeMessages(DirectChat chat); Single updateMessage(Message message); Single upsertMessage(DirectChat chat, Message message); Completable deleteMessage(Message message); }