From 16ea540d48353a8816ce778309e30ee4e07055df Mon Sep 17 00:00:00 2001 From: Naveen Date: Tue, 27 Sep 2022 15:43:10 +0530 Subject: [PATCH] Setup database migrations for scheduled messages --- .../smsmessenger/databases/MessagesDatabase.kt | 11 ++++++++++- .../smsmessenger/interfaces/MessagesDao.kt | 6 ++++++ .../simplemobiletools/smsmessenger/models/Message.kt | 6 +++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt index d4c4972b..e0d46972 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt @@ -17,7 +17,7 @@ import com.simplemobiletools.smsmessenger.models.Conversation import com.simplemobiletools.smsmessenger.models.Message import com.simplemobiletools.smsmessenger.models.MessageAttachment -@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 4) +@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 5) @TypeConverters(Converters::class) abstract class MessagesDatabase : RoomDatabase() { @@ -41,6 +41,7 @@ abstract class MessagesDatabase : RoomDatabase() { .addMigrations(MIGRATION_1_2) .addMigrations(MIGRATION_2_3) .addMigrations(MIGRATION_3_4) + .addMigrations(MIGRATION_4_5) .build() } } @@ -85,5 +86,13 @@ abstract class MessagesDatabase : RoomDatabase() { } } } + + private val MIGRATION_4_5 = object : Migration(4, 5) { + override fun migrate(database: SupportSQLiteDatabase) { + database.apply { + execSQL("ALTER TABLE messages ADD COLUMN is_scheduled INTEGER NOT NULL DEFAULT 0") + } + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt index 0ddf5b59..e9d6a3b2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt @@ -23,6 +23,12 @@ interface MessagesDao { @Query("SELECT * FROM messages WHERE thread_id = :threadId") fun getThreadMessages(threadId: Long): List + @Query("SELECT * FROM messages WHERE thread_id = :threadId AND is_scheduled") + fun getScheduledThreadMessages(threadId: Long): List + + @Query("SELECT * FROM messages WHERE thread_id = :threadId AND id = :messageId AND is_scheduled") + fun getScheduledMessageWithId(threadId: Long, messageId: Long): Message + @Query("SELECT * FROM messages WHERE body LIKE :text") fun getMessagesWithText(text: String): List diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt index da89136e..48a25679 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt @@ -20,7 +20,11 @@ data class Message( @ColumnInfo(name = "attachment") val attachment: MessageAttachment?, @ColumnInfo(name = "sender_name") var senderName: String, @ColumnInfo(name = "sender_photo_uri") val senderPhotoUri: String, - @ColumnInfo(name = "subscription_id") var subscriptionId: Int) : ThreadItem() { + @ColumnInfo(name = "subscription_id") var subscriptionId: Int, + @ColumnInfo(name = "is_scheduled") var isScheduled: Boolean = false +) : ThreadItem() { fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX + + fun millis() = date * 1000L }