Skip to content

Instantly share code, notes, and snippets.

@dinorahto
Last active July 16, 2019 15:21
Show Gist options
  • Save dinorahto/eeb56141711f8e448e7168d3720cdb5a to your computer and use it in GitHub Desktop.
Save dinorahto/eeb56141711f8e448e7168d3720cdb5a to your computer and use it in GitHub Desktop.
Final migration
@Database(entities = [ProductEntity::class], version = SharedContentDataBase.VERSION)
abstract class SharedContentDataBase : RoomDatabase() {
companion object {
const val VERSION = 2
val migrationRoom: Migration = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
val queryForDatabase = """
CREATE TABLE IF NOT EXISTS UpdatedTableProduct (idProduct TEXT PRIMARY KEY NOT NULL, name TEXT, nameClean TEXT,
description TEXT, discount INT, skuId TEXT, hasAddedToCart INT, opened INT, notified INT,
FOREIGN KEY (idProduct) REFERENCES Image(imageId) ON UPDATE NO ACTION ON DELETE NO ACTION,
FOREIGN KEY (skuId) REFERENCES Prices(idProduct) ON UPDATE NO ACTION ON DELETE NO ACTION """
database.execSQL(queryForDatabase)
database.execSQL("ALTER TABLE Product ADD COLUMN hasAddedToCart INT")
database.execSQL("ALTER TABLE Product ADD COLUMN opened INT")
database.execSQL("ALTER TABLE Product ADD COLUMN notified INT default 0")
val queryCopyDataBase = """
INSERT OR REPLACE INTO UpdatedTableProduct (idProduct, name, nameClean, description, discount,
skuId, hasAddedToCart, opened, notified)
SELECT idProduct, name, nameClean, description, discount,
skuId, hasAddedToCart, opened, notified FROM Product"""
database.execSQL(queryCopyDataBase)
database.execSQL("DROP TABLE Product")
database.execSQL("ALTER TABLE UpdatedTableProduct RENAME TO Product")
database.execSQL("CREATE INDEX IF NOT EXISTS index_Product_idProduct_skuId ON Product(idProduct, skuId)")
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment