package org.mercury_im.messenger.data.repository; import org.mercury_im.messenger.util.Optional; import org.mercury_im.messenger.entity.chat.DirectChat; import org.mercury_im.messenger.entity.contact.Peer; import java.util.List; import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Maybe; import io.reactivex.Observable; import io.reactivex.Single; public interface DirectChatRepository { Single insertDirectChat(DirectChat chat); default Observable> observeDirectChat(DirectChat chat) { return observeDirectChat(chat.getId()); } Observable> observeDirectChat(UUID chatId); Maybe getDirectChat(UUID chatId); Single getOrCreateChatWithPeer(Peer peer); Observable> observeDirectChatByPeer(Peer peer); Maybe getDirectChatByPeer(Peer peer); Observable> observeAllDirectChats(); Single updateDirectChat(DirectChat chat); Single upsertDirectChat(DirectChat chat); Completable deleteDirectChat(DirectChat chat); }