· 6 years ago · Jul 28, 2019, 02:36 AM
1@Database(entities = [ProductEntity::class], version = SharedContentDataBase.VERSION)
2abstract class SharedContentDataBase : RoomDatabase() {
3
4 companion object {
5 const val VERSION = 2
6
7 val migrationRoom: Migration = object : Migration(1, 2) {
8 override fun migrate(database: SupportSQLiteDatabase) {
9 val queryForDatabase = """
10 CREATE TABLE IF NOT EXISTS UpdatedTableProduct (idProduct TEXT PRIMARY KEY NOT NULL, name TEXT, nameClean TEXT,
11 description TEXT, discount INT, skuId TEXT, hasAddedToCart INT, opened INT, notified INT,
12 FOREIGN KEY (idProduct) REFERENCES Image(imageId) ON UPDATE NO ACTION ON DELETE NO ACTION,
13 FOREIGN KEY (skuId) REFERENCES Prices(idProduct) ON UPDATE NO ACTION ON DELETE NO ACTION """
14 database.execSQL(queryForDatabase)
15
16 database.execSQL("ALTER TABLE Product ADD COLUMN hasAddedToCart INT")
17 database.execSQL("ALTER TABLE Product ADD COLUMN opened INT")
18 database.execSQL("ALTER TABLE Product ADD COLUMN notified INT default 0")
19
20 val queryCopyDataBase = """
21 INSERT OR REPLACE INTO UpdatedTableProduct (idProduct, name, nameClean, description, discount,
22 skuId, hasAddedToCart, opened, notified)
23 SELECT idProduct, name, nameClean, description, discount,
24 skuId, hasAddedToCart, opened, notified FROM Product"""
25
26 database.execSQL(queryCopyDataBase)
27 database.execSQL("DROP TABLE Product")
28 database.execSQL("ALTER TABLE UpdatedTableProduct RENAME TO Product")
29
30 database.execSQL("CREATE INDEX IF NOT EXISTS index_Product_idProduct_skuId ON Product(idProduct, skuId)")
31 }
32 }
33 }
34}