Mercury-IM/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomChatModel.java

127 lines
3.3 KiB
Java

package org.mercury_im.messenger.persistence.room.model;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import org.mercury_im.messenger.persistence.model.ChatModel;
import static androidx.room.ForeignKey.CASCADE;
import static org.mercury_im.messenger.persistence.room.model.RoomChatModel.KEY_ID;
import static org.mercury_im.messenger.persistence.room.model.RoomChatModel.KEY_ENTITY;
import static org.mercury_im.messenger.persistence.room.model.RoomChatModel.TABLE;
@Entity(tableName = TABLE,
indices = {
@Index(KEY_ID), @Index(KEY_ENTITY)
},
foreignKeys = {
@ForeignKey(entity = RoomEntityModel.class,
parentColumns = RoomEntityModel.KEY_ID,
childColumns = KEY_ENTITY,
onDelete = CASCADE)
})
public class RoomChatModel implements ChatModel {
public static final String TABLE = "chats";
public static final String KEY_ID = "pk_chat_id";
public static final String KEY_ENTITY = "fk_entity_id";
public static final String KEY_ACTIVE = "active";
public static final String KEY_LAST_READ_MSG = "last_read_message";
public static final String KEY_MOST_RECENT_MAM_MSG = "most_recent_mam_msg";
public static final String KEY_EARLIEST_MAM_MSG = "earliest_mam_msg";
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = KEY_ID)
private long id;
@ColumnInfo(name = KEY_ENTITY)
private long peerEntityId;
@ColumnInfo(name = KEY_ACTIVE)
private boolean isActive;
@ColumnInfo(name = KEY_LAST_READ_MSG)
private long lastReadMessageId;
@ColumnInfo(name = KEY_MOST_RECENT_MAM_MSG)
private String mostRecentMamMessageId;
@ColumnInfo(name = KEY_EARLIEST_MAM_MSG)
private String earliestMamMessageId;
@Override
public long getId() {
return id;
}
@Override
public void setId(long id) {
this.id = id;
}
@Override
public long getPeerEntityId() {
return peerEntityId;
}
@Override
public void setPeerEntityId(long id) {
this.peerEntityId = id;
}
@Override
public boolean isActive() {
return isActive;
}
@Override
public void setActive(boolean active) {
this.isActive = active;
}
@Override
public long getLastReadMessageId() {
return lastReadMessageId;
}
@Override
public void setLastReadMessageId(long messageId) {
this.lastReadMessageId = messageId;
}
@Override
public String getMostRecentMamMessageId() {
return mostRecentMamMessageId;
}
@Override
public void setMostRecentMamMessageId(String uid) {
this.mostRecentMamMessageId = uid;
}
@Override
public String getEarliestMamMessageId() {
return earliestMamMessageId;
}
@Override
public void setEarliestMamMessageId(String uid) {
this.earliestMamMessageId = uid;
}
@Override
@NonNull
public String toString() {
return "ChatModel[" +
KEY_ID + ": " + getId() + ", " +
KEY_ENTITY + ": " + getPeerEntityId() + ", " +
KEY_ACTIVE + ": " + isActive() +
"]";
}
}