Mercury-IM/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java

35 lines
1.2 KiB
Java

package org.mercury_im.messenger.persistence.room.dao;
import androidx.room.Dao;
import androidx.room.Query;
import androidx.room.TypeConverters;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
import java.util.List;
import io.reactivex.Maybe;
import io.reactivex.Observable;
@Dao
@TypeConverters(EntityBareJidConverter.class)
public interface ChatDao extends BaseDao<RoomChatModel> {
@Query("SELECT * FROM chats")
Observable<List<RoomChatModel>> getAllChats();
@Query("SELECT chats.* FROM chats JOIN entities WHERE fk_account_id = :accountId")
Observable<List<RoomChatModel>> getAllChatsOf(long accountId);
@Query("SELECT * FROM chats WHERE fk_entity_id = :entityId")
Maybe<RoomChatModel> getChatWithIdentity(long entityId);
@Query("SELECT chats.* FROM chats JOIN entities WHERE fk_account_id = :accountId AND jid = :jid")
Maybe<RoomChatModel> getChatWithJid(long accountId, EntityBareJid jid);
@Query("SELECT chats.* FROM chats JOIN contacts WHERE contacts.pk_contact_id = :contactId")
Maybe<RoomChatModel> getChatWithContact(long contactId);
}