properly handle migration of new fields
This commit is contained in:
parent
593b0d575e
commit
c4a9a2b14c
|
@ -4,12 +4,17 @@ import android.content.Context
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
|
import androidx.room.TypeConverters
|
||||||
|
import androidx.room.migration.Migration
|
||||||
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
|
import com.simplemobiletools.launcher.helpers.Converters
|
||||||
import com.simplemobiletools.launcher.interfaces.AppLaunchersDao
|
import com.simplemobiletools.launcher.interfaces.AppLaunchersDao
|
||||||
import com.simplemobiletools.launcher.interfaces.HomeScreenGridItemsDao
|
import com.simplemobiletools.launcher.interfaces.HomeScreenGridItemsDao
|
||||||
import com.simplemobiletools.launcher.models.AppLauncher
|
import com.simplemobiletools.launcher.models.AppLauncher
|
||||||
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
||||||
|
|
||||||
@Database(entities = [AppLauncher::class, HomeScreenGridItem::class], version = 1)
|
@Database(entities = [AppLauncher::class, HomeScreenGridItem::class], version = 2)
|
||||||
|
@TypeConverters(Converters::class)
|
||||||
abstract class AppsDatabase : RoomDatabase() {
|
abstract class AppsDatabase : RoomDatabase() {
|
||||||
|
|
||||||
abstract fun AppLaunchersDao(): AppLaunchersDao
|
abstract fun AppLaunchersDao(): AppLaunchersDao
|
||||||
|
@ -24,11 +29,19 @@ abstract class AppsDatabase : RoomDatabase() {
|
||||||
synchronized(AppsDatabase::class) {
|
synchronized(AppsDatabase::class) {
|
||||||
if (db == null) {
|
if (db == null) {
|
||||||
db = Room.databaseBuilder(context.applicationContext, AppsDatabase::class.java, "apps.db")
|
db = Room.databaseBuilder(context.applicationContext, AppsDatabase::class.java, "apps.db")
|
||||||
|
.addMigrations(MIGRATION_1_2)
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return db!!
|
return db!!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||||
|
override fun migrate(database: SupportSQLiteDatabase) {
|
||||||
|
database.execSQL("ALTER TABLE home_screen_grid_items ADD COLUMN intent TEXT default '' NOT NULL")
|
||||||
|
database.execSQL("ALTER TABLE home_screen_grid_items ADD COLUMN icon BLOB")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,12 @@ import java.io.ByteArrayOutputStream
|
||||||
|
|
||||||
class Converters {
|
class Converters {
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
fun toBitmap(bytes: ByteArray): Bitmap? {
|
fun toBitmap(bytes: ByteArray?): Bitmap? {
|
||||||
return BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
|
return if (bytes == null) {
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
|
|
|
@ -22,7 +22,7 @@ data class HomeScreenGridItem(
|
||||||
@ColumnInfo(name = "class_name") var className: String,
|
@ColumnInfo(name = "class_name") var className: String,
|
||||||
@ColumnInfo(name = "widget_id") var widgetId: Int,
|
@ColumnInfo(name = "widget_id") var widgetId: Int,
|
||||||
@ColumnInfo(name = "intent") var intent: String, // used at shortcuts on click
|
@ColumnInfo(name = "intent") var intent: String, // used at shortcuts on click
|
||||||
@ColumnInfo(name = "icon") var icon: Bitmap?, // store only images of shortcuts, those cannot be retrieved anytime
|
@ColumnInfo(name = "icon") var icon: Bitmap? = null, // store only images of shortcuts, those cannot be retrieved anytime
|
||||||
|
|
||||||
@Ignore var drawable: Drawable? = null,
|
@Ignore var drawable: Drawable? = null,
|
||||||
@Ignore var providerInfo: AppWidgetProviderInfo? = null, // used at widgets
|
@Ignore var providerInfo: AppWidgetProviderInfo? = null, // used at widgets
|
||||||
|
|
Loading…
Reference in New Issue