16
16
17
17
package com.criticalay.neer.data
18
18
19
+ import androidx.room.AutoMigration
19
20
import androidx.room.Database
20
21
import androidx.room.RoomDatabase
21
22
import androidx.room.TypeConverters
23
+ import androidx.room.migration.AutoMigrationSpec
24
+ import androidx.room.migration.Migration
25
+ import androidx.sqlite.db.SupportSQLiteDatabase
22
26
import com.criticalay.neer.alarm.default_alarm.data.AlarmDao
23
27
import com.criticalay.neer.alarm.default_alarm.data.AlarmItem
24
28
import com.criticalay.neer.data.dao.BeverageDao
@@ -27,13 +31,43 @@ import com.criticalay.neer.data.dao.UserDao
27
31
import com.criticalay.neer.data.model.Beverage
28
32
import com.criticalay.neer.data.model.Intake
29
33
import com.criticalay.neer.data.model.User
34
+ import com.criticalay.neer.utils.Constants.ALARM_DATABASE_TABLE
30
35
import com.criticalay.neer.utils.Converters
31
36
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 )
33
43
@TypeConverters(Converters ::class )
34
44
abstract class NeerDatabase : RoomDatabase () {
35
45
abstract fun userDao (): UserDao
36
46
abstract fun intakeDao () : IntakeDao
37
47
abstract fun beverageDao () : BeverageDao
38
48
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
+ }
39
73
}
0 commit comments