Skip to content

Commit 5582976

Browse files
authored
safe migration of database (#10)
1 parent 144686a commit 5582976

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ android {
5252
//
5353
// This ensures the correct ordering between the various types of releases (dev < alpha < beta < release) which is
5454
// needed for upgrades to be offered correctly.
55-
versionCode = 10300000
56-
versionName = "1.03alpha1"
55+
versionCode = 10200301
56+
versionName = "1.02.1"
5757

5858
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
5959
vectorDrawables {

app/src/main/java/com/criticalay/neer/data/NeerDatabase.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@
1616

1717
package com.criticalay.neer.data
1818

19+
import androidx.room.AutoMigration
1920
import androidx.room.Database
2021
import androidx.room.RoomDatabase
2122
import androidx.room.TypeConverters
23+
import androidx.room.migration.AutoMigrationSpec
24+
import androidx.room.migration.Migration
25+
import androidx.sqlite.db.SupportSQLiteDatabase
2226
import com.criticalay.neer.alarm.default_alarm.data.AlarmDao
2327
import com.criticalay.neer.alarm.default_alarm.data.AlarmItem
2428
import com.criticalay.neer.data.dao.BeverageDao
@@ -27,13 +31,43 @@ import com.criticalay.neer.data.dao.UserDao
2731
import com.criticalay.neer.data.model.Beverage
2832
import com.criticalay.neer.data.model.Intake
2933
import com.criticalay.neer.data.model.User
34+
import com.criticalay.neer.utils.Constants.ALARM_DATABASE_TABLE
3035
import com.criticalay.neer.utils.Converters
3136

32-
@Database(entities = [Beverage::class, User::class, Intake::class, AlarmItem::class], version = 1, exportSchema = true)
37+
@Database(entities = [
38+
Beverage::class,
39+
User::class,
40+
Intake::class,
41+
AlarmItem::class],
42+
version = 2, exportSchema = true)
3343
@TypeConverters(Converters::class)
3444
abstract class NeerDatabase : RoomDatabase() {
3545
abstract fun userDao(): UserDao
3646
abstract fun intakeDao() : IntakeDao
3747
abstract fun beverageDao() : BeverageDao
3848
abstract fun alarmDao(): AlarmDao
49+
50+
companion object {
51+
val MIGRATION_1_2 = object : Migration(1, 2) {
52+
override fun migrate(db: SupportSQLiteDatabase) {
53+
// Migration code goes here
54+
// Example:
55+
// database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER")
56+
db.execSQL("DROP TABLE IF EXISTS $ALARM_DATABASE_TABLE")
57+
58+
// Create the new table for AlarmItem with the corrected structure
59+
db.execSQL(
60+
"CREATE TABLE IF NOT EXISTS $ALARM_DATABASE_TABLE (" +
61+
"alarmId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
62+
"time INTEGER NOT NULL," + // Corrected to INTEGER
63+
"interval REAL," +
64+
"title TEXT NOT NULL," +
65+
"message TEXT NOT NULL," +
66+
"repeating INTEGER NOT NULL DEFAULT 0," +
67+
"alarmState INTEGER NOT NULL DEFAULT 1)"
68+
)
69+
}
70+
}
71+
72+
}
3973
}

app/src/main/java/com/criticalay/neer/di/DatabaseModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ object DatabaseModule {
3838
context = context,
3939
NeerDatabase::class.java,
4040
NEER_DATABASE_NAME
41-
).build()
41+
).addMigrations(NeerDatabase.MIGRATION_1_2).build()
4242

4343
@Provides
4444
@Singleton

0 commit comments

Comments
 (0)