package org.mercury_im.messenger.core.repository; import org.mercury_im.messenger.core.entity.chat.GroupChat; 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 GroupChatRepository { Single insertGroupChat(GroupChat chat); Observable> observeGroupChat(long chatId); Maybe getGroupChat(long chatId); Observable> observeGroupChatByRoomAddress(String roomAddress); Maybe getGroupChatByRoomAddress(String roomAddress); Observable> observeAllGroupChats(); Single updateGroupChat(GroupChat chat); Single upsertGroupChat(GroupChat chat); Completable deleteGroupChat(GroupChat chat); // Messages Single insertMessage(GroupChat chat, Message message); Observable> observeMessages(GroupChat chat); Single updateMessage(Message message); Single upsertMessage(GroupChat chat, Message message); Completable deleteMessage(Message message); }