2019-05-27 21:34:11 +02:00
|
|
|
package org.mercury_im.messenger.persistence.room.dao;
|
|
|
|
|
2019-06-20 17:20:23 +02:00
|
|
|
import androidx.room.Dao;
|
2019-05-27 21:34:11 +02:00
|
|
|
import androidx.room.Query;
|
2019-06-20 17:20:23 +02:00
|
|
|
import androidx.room.TypeConverters;
|
2019-05-27 21:34:11 +02:00
|
|
|
|
|
|
|
import org.jxmpp.jid.EntityBareJid;
|
|
|
|
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
|
2019-09-10 18:24:47 +02:00
|
|
|
import org.mercury_im.messenger.persistence.pojo.Chat;
|
2019-06-20 17:20:23 +02:00
|
|
|
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
|
2019-05-27 21:34:11 +02:00
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
2019-08-03 19:05:50 +02:00
|
|
|
import io.reactivex.Maybe;
|
|
|
|
import io.reactivex.Observable;
|
|
|
|
|
2019-06-20 17:20:23 +02:00
|
|
|
@Dao
|
|
|
|
@TypeConverters(EntityBareJidConverter.class)
|
2019-05-27 21:34:11 +02:00
|
|
|
public interface ChatDao extends BaseDao<RoomChatModel> {
|
|
|
|
|
2019-06-10 02:52:08 +02:00
|
|
|
@Query("SELECT * FROM chats")
|
2019-08-03 19:05:50 +02:00
|
|
|
Observable<List<RoomChatModel>> getAllChats();
|
2019-05-27 21:34:11 +02:00
|
|
|
|
2019-06-24 01:41:17 +02:00
|
|
|
@Query("SELECT chats.* FROM chats JOIN entities WHERE fk_account_id = :accountId")
|
2019-09-08 04:47:59 +02:00
|
|
|
Observable<List<RoomChatModel>> getAllChatsOfAccount(long accountId);
|
2019-05-27 21:34:11 +02:00
|
|
|
|
2019-06-24 01:41:17 +02:00
|
|
|
@Query("SELECT * FROM chats WHERE fk_entity_id = :entityId")
|
2019-09-08 04:47:59 +02:00
|
|
|
Maybe<RoomChatModel> maybeGetChatWithEntity(long entityId);
|
2019-05-27 21:34:11 +02:00
|
|
|
|
2019-09-08 04:47:59 +02:00
|
|
|
@Query("SELECT * FROM chats WHERE fk_entity_id = :entityId")
|
|
|
|
Observable<RoomChatModel> getChatWithEntity(long entityId);
|
2019-06-10 02:52:08 +02:00
|
|
|
|
2019-09-08 04:47:59 +02:00
|
|
|
@Query("SELECT chats.* FROM chats JOIN entities WHERE fk_account_id = :accountId AND jid = :jid")
|
|
|
|
Maybe<RoomChatModel> maybeGetChatWithJid(long accountId, EntityBareJid jid);
|
2019-09-02 01:06:17 +02:00
|
|
|
|
|
|
|
@Query("SELECT chats.* FROM chats JOIN entities WHERE fk_account_id = :accountId AND jid = :jid")
|
2019-09-08 04:47:59 +02:00
|
|
|
Observable<RoomChatModel> getChatWithJid(long accountId, EntityBareJid jid);
|
2019-09-02 01:06:17 +02:00
|
|
|
|
2019-09-08 04:47:59 +02:00
|
|
|
@Query("SELECT chats.* FROM chats JOIN contacts WHERE contacts.pk_contact_id = :contactId")
|
|
|
|
Maybe<RoomChatModel> maybeGetChatWithContact(long contactId);
|
2019-09-02 01:06:17 +02:00
|
|
|
|
2019-09-08 04:47:59 +02:00
|
|
|
@Query("SELECT chats.* FROM chats JOIN contacts WHERE contacts.pk_contact_id = :contactId")
|
|
|
|
Observable<RoomChatModel> getChatWithContact(long contactId);
|
2019-09-10 18:24:47 +02:00
|
|
|
|
|
|
|
@Query("SELECT chats.pk_chat_id as chatId, " +
|
|
|
|
"chats.fk_entity_id as entityId, " +
|
2019-09-30 02:34:47 +02:00
|
|
|
"contacts.rostername as contactName, " +
|
2019-09-23 23:20:43 +02:00
|
|
|
"entities.fk_account_id as accountId, " +
|
2019-09-10 18:24:47 +02:00
|
|
|
"jid, active " +
|
2019-09-23 23:20:43 +02:00
|
|
|
"from chats " +
|
|
|
|
"LEFT JOIN entities " +
|
|
|
|
"ON chats.fk_entity_id = entities.pk_entity_id " +
|
|
|
|
"LEFT JOIN contacts " +
|
|
|
|
"ON entities.pk_entity_id = contacts.fk_entity_id")
|
2019-09-10 18:24:47 +02:00
|
|
|
Observable<List<Chat>> getChatPojos();
|
2019-05-27 21:34:11 +02:00
|
|
|
}
|