This commit is contained in:
Paul Schaub 2019-06-07 15:48:11 +02:00
parent c122e2db81
commit d5153f400e
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
3 changed files with 55 additions and 13 deletions

View File

@ -11,21 +11,30 @@ import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.model.AccountModel;
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
@Entity(tableName = "accounts", indices = {@Index("id")})
import static org.mercury_im.messenger.persistence.room.model.RoomAccountModel.KEY_ID;
import static org.mercury_im.messenger.persistence.room.model.RoomAccountModel.TABLE;
@Entity(tableName = TABLE, indices = {@Index(KEY_ID)})
public class RoomAccountModel implements AccountModel {
public static final String TABLE = "accounts";
public static final String KEY_ID = "id";
public static final String KEY_JID = "jid";
public static final String KEY_PASSWORD = "password";
public static final String KEY_ENABLED = "enabled";
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
@ColumnInfo(name = KEY_ID)
public long id;
@TypeConverters(EntityBareJidConverter.class)
@ColumnInfo(name = "jid")
@ColumnInfo(name = KEY_JID)
private EntityBareJid jid;
@ColumnInfo(name = "password")
@ColumnInfo(name = KEY_PASSWORD)
private String password;
@ColumnInfo(name = "enabled")
@ColumnInfo(name = KEY_ENABLED)
private boolean enabled;
@Override

View File

@ -2,21 +2,40 @@ package org.mercury_im.messenger.persistence.room.model;
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 org.mercury_im.messenger.persistence.model.XmppIdentityModel;
@Entity(tableName = "chats", indices = {@Index("id")})
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_XMPPID;
import static org.mercury_im.messenger.persistence.room.model.RoomChatModel.TABLE;
@Entity(tableName = TABLE,
indices = {@Index(KEY_ID), @Index(KEY_XMPPID)},
foreignKeys = {
@ForeignKey(entity = XmppIdentityModel.class, parentColumns = "id", childColumns = "xmppId", onDelete = CASCADE)
})
public class RoomChatModel implements ChatModel {
public static final String TABLE = "chats";
public static final String KEY_ID = "id";
public static final String KEY_XMPPID = "xmppId";
public static final String KEY_OPEN = "open";
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
long id;
@ColumnInfo(name = KEY_ID)
private long id;
long xmppIdentityId;
@ColumnInfo(name = KEY_XMPPID)
private long xmppIdentityId;
boolean isOpened;
@ColumnInfo(name = KEY_OPEN)
private boolean isOpened;
@Override
public long getId() {

View File

@ -1,7 +1,5 @@
package org.mercury_im.messenger.persistence.room.model;
import android.graphics.Bitmap;
import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.ForeignKey;
@ -16,8 +14,9 @@ import org.mercury_im.messenger.persistence.room.type_converter.FileConverter;
import java.io.File;
import static androidx.room.ForeignKey.CASCADE;
import static org.mercury_im.messenger.persistence.room.model.RoomXmppIdentityModel.TABLE;
@Entity(tableName = "entities", primaryKeys = {"accountId", "jid"},
@Entity(tableName = TABLE, primaryKeys = {"accountId", "jid"},
indices = {@Index(value = {"accountId", "jid"}, unique = true)},
foreignKeys = @ForeignKey(entity = RoomAccountModel.class,
parentColumns = "id",
@ -25,6 +24,11 @@ import static androidx.room.ForeignKey.CASCADE;
onDelete = CASCADE))
public class RoomXmppIdentityModel implements XmppIdentityModel {
public static final String TABLE = "entities";
public static final String KEY_ACCOUNT_ID = "accountId";
public static final String KEY_JID = "jid";
public static final String KEY_AVATAR = "avatar";
protected long accountId;
@NonNull
@ -34,6 +38,16 @@ public class RoomXmppIdentityModel implements XmppIdentityModel {
@TypeConverters(FileConverter.class)
protected File avatarFile;
@Override
public long getId() {
return 0;
}
@Override
public void setId(long id) {
}
@NonNull
@Override
public EntityBareJid getJid() {