From a12b922c8ee1c30b1c67e9b845017cc1ab88d0e3 Mon Sep 17 00:00:00 2001 From: "h.malik144@gmail.com" Date: Sat, 16 Sep 2023 21:30:52 +0100 Subject: [PATCH] - mid commit --- .../h_mal/farmr/data/room/AppDatabase.kt | 2 ++ .../h_mal/farmr/data/room/ShiftDao.kt | 10 +++---- .../farmr/data/room/entity/ShiftEntity.kt | 21 +++++++------- .../farmr/data/room/migrations/Migrations.kt | 28 +++++++++++++++---- .../h_mal/farmr/viewmodel/ShiftViewModel.kt | 2 +- 5 files changed, 42 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/appttude/h_mal/farmr/data/room/AppDatabase.kt b/app/src/main/java/com/appttude/h_mal/farmr/data/room/AppDatabase.kt index 19f3799..0c957b4 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/data/room/AppDatabase.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/data/room/AppDatabase.kt @@ -7,6 +7,7 @@ import androidx.room.RoomDatabase import androidx.room.TypeConverters import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase +import com.appttude.h_mal.farmr.data.legacydb.ShiftsContract import com.appttude.h_mal.farmr.data.legacydb.ShiftsDbHelper import com.appttude.h_mal.farmr.data.legacydb.ShiftsDbHelper.Companion.DATABASE_NAME import com.appttude.h_mal.farmr.data.room.converters.DateConverter @@ -14,6 +15,7 @@ import com.appttude.h_mal.farmr.data.room.converters.TimeConverter import com.appttude.h_mal.farmr.data.room.entity.ShiftEntity import com.appttude.h_mal.farmr.data.room.migrations.MIGRATION_4_5 +const val ROOM_DATABASE = "room_${ShiftsContract.ShiftsEntry.TABLE_NAME}" @Database( entities = [ShiftEntity::class], version = 5, diff --git a/app/src/main/java/com/appttude/h_mal/farmr/data/room/ShiftDao.kt b/app/src/main/java/com/appttude/h_mal/farmr/data/room/ShiftDao.kt index 30dc09d..b671956 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/data/room/ShiftDao.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/data/room/ShiftDao.kt @@ -20,18 +20,18 @@ interface ShiftDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun upsertListOfFullShift(items: List) - @Query("SELECT * FROM shifts WHERE ${ShiftsEntry._ID} = :shiftId LIMIT 1") + @Query("SELECT * FROM $ROOM_DATABASE WHERE ${ShiftsEntry._ID} = :shiftId LIMIT 1") fun getCurrentFullShift(shiftId: Long): LiveData - @Query("SELECT * FROM shifts WHERE ${ShiftsEntry._ID} = :shiftId LIMIT 1") + @Query("SELECT * FROM $ROOM_DATABASE WHERE ${ShiftsEntry._ID} = :shiftId LIMIT 1") fun getCurrentFullShiftSingle(shiftId: Long): ShiftEntity? - @Query("SELECT * FROM shifts") + @Query("SELECT * FROM $ROOM_DATABASE") fun getAllFullShift(): LiveData> - @Query("DELETE FROM shifts WHERE ${ShiftsEntry._ID} = :shiftId") + @Query("DELETE FROM $ROOM_DATABASE WHERE ${ShiftsEntry._ID} = :shiftId") fun deleteShift(shiftId: Long): Int - @Query("DELETE FROM shifts") + @Query("DELETE FROM $ROOM_DATABASE") fun deleteAllShifts(): Int } \ No newline at end of file diff --git a/app/src/main/java/com/appttude/h_mal/farmr/data/room/entity/ShiftEntity.kt b/app/src/main/java/com/appttude/h_mal/farmr/data/room/entity/ShiftEntity.kt index ec98326..e60fe79 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/data/room/entity/ShiftEntity.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/data/room/entity/ShiftEntity.kt @@ -6,23 +6,24 @@ import androidx.room.PrimaryKey import com.appttude.h_mal.farmr.data.legacydb.ShiftObject import com.appttude.h_mal.farmr.data.legacydb.ShiftsContract.ShiftsEntry import com.appttude.h_mal.farmr.data.legacydb.ShiftsContract.ShiftsEntry.TABLE_NAME +import com.appttude.h_mal.farmr.data.room.ROOM_DATABASE import com.appttude.h_mal.farmr.model.ShiftType import java.sql.Date import java.sql.Time -@Entity(tableName = TABLE_NAME) +@Entity(tableName = ROOM_DATABASE) data class ShiftEntity( @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_DESCRIPTION) val description: String, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_DATE, typeAffinity = ColumnInfo.UNDEFINED) val date: Date, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TIME_IN, typeAffinity = ColumnInfo.TEXT) val timeIn: Time, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TIME_OUT, typeAffinity = ColumnInfo.TEXT) val timeOut: Time, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_BREAK) val breakMins: Int? = 0, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_DURATION, typeAffinity = ColumnInfo.REAL, defaultValue = "0") val duration: Float = 0f, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TYPE) val type: String, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_UNIT, typeAffinity = ColumnInfo.REAL) val units: Float? = 0f, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_PAYRATE, typeAffinity = ColumnInfo.REAL) val payRate: Float? = 0f, - @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TOTALPAY, typeAffinity = ColumnInfo.REAL) val totalPay: Float? = 0f, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_DATE) val date: Date, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TIME_IN) val timeIn: Time, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TIME_OUT) val timeOut: Time, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_BREAK, defaultValue = "0") val breakMins: Int? = 0, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_DURATION, defaultValue = "0") val duration: Float = 0f, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TYPE, defaultValue = "Hourly") val type: String, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_UNIT, defaultValue = "0") val units: Float? = 0f, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_PAYRATE, defaultValue = "0") val payRate: Float? = 0f, + @ColumnInfo(name = ShiftsEntry.COLUMN_SHIFT_TOTALPAY, defaultValue = "0") val totalPay: Float? = 0f, @PrimaryKey @ColumnInfo(name = ShiftsEntry._ID) val id: Long? = 0, ) { diff --git a/app/src/main/java/com/appttude/h_mal/farmr/data/room/migrations/Migrations.kt b/app/src/main/java/com/appttude/h_mal/farmr/data/room/migrations/Migrations.kt index 9362054..5f67847 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/data/room/migrations/Migrations.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/data/room/migrations/Migrations.kt @@ -2,13 +2,31 @@ package com.appttude.h_mal.farmr.data.room.migrations import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase -import com.appttude.h_mal.farmr.data.legacydb.ShiftsDbHelper +import com.appttude.h_mal.farmr.data.legacydb.ShiftsContract.ShiftsEntry +import com.appttude.h_mal.farmr.data.room.ROOM_DATABASE +import com.appttude.h_mal.farmr.model.ShiftType val MIGRATION_4_5 = object : Migration(4, 5) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("DROP TABLE IF EXISTS '" + ShiftsDbHelper.SQL_CREATE_PRODUCTS_TABLE_2 + "'"); - database.execSQL("ALTER TABLE `shifts` ADD COLUMN `date` TEXT NOT NULL") - - // CREATE TABLE IF NOT EXISTS (`description` TEXT NOT NULL, , `timein` TEXT NOT NULL, `timeout` TEXT NOT NULL, `break` INTEGER, `duration` REAL NOT NULL DEFAULT 0, `shifttype` TEXT NOT NULL, `unit` REAL, `payrate` REAL, `totalpay` REAL, `_id` INTEGER, PRIMARY KEY(`_id`)) + // Drop unused table + database.execSQL("DROP TABLE IF EXISTS '${ShiftsEntry.TABLE_NAME_EXPORT}'") + // Create a new table for room + database.execSQL( + "CREATE TABLE $ROOM_DATABASE (${ShiftsEntry._ID} INTEGER PRIMARY KEY AUTOINCREMENT, " + + "${ShiftsEntry.COLUMN_SHIFT_DESCRIPTION} TEXT NOT NULL, " + + "${ShiftsEntry.COLUMN_SHIFT_DATE} TEXT NOT NULL, " + + "${ShiftsEntry.COLUMN_SHIFT_TIME_IN} TEXT NOT NULL, " + + "${ShiftsEntry.COLUMN_SHIFT_TIME_OUT} TEXT NOT NULL, " + + "${ShiftsEntry.COLUMN_SHIFT_BREAK} INTEGER NOT NULL DEFAULT 0, " + + "${ShiftsEntry.COLUMN_SHIFT_DURATION} REAL NOT NULL DEFAULT 0, " + + "${ShiftsEntry.COLUMN_SHIFT_TYPE} TEXT NOT NULL DEFAULT ${ShiftType.HOURLY.type}, " + + "${ShiftsEntry.COLUMN_SHIFT_UNIT} REAL NOT NULL DEFAULT 0, " + + "${ShiftsEntry.COLUMN_SHIFT_PAYRATE} REAL NOT NULL DEFAULT 0, " + + "${ShiftsEntry.COLUMN_SHIFT_TOTALPAY} REAL NOT NULL DEFAULT 0)" + ) + // Copy data from old table to new + database.execSQL("INSERT INTO $ROOM_DATABASE SELECT * FROM ${ShiftsEntry.TABLE_NAME}") + // Drop old table + database.execSQL("DROP TABLE IF EXISTS '${ShiftsEntry.TABLE_NAME}'") } } \ No newline at end of file diff --git a/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/ShiftViewModel.kt b/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/ShiftViewModel.kt index a4761d7..d604fd5 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/ShiftViewModel.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/ShiftViewModel.kt @@ -16,7 +16,7 @@ open class ShiftViewModel( /* * Add Item & Further info */ - fun getCurrentShift(id: Long) = repository.readSingleShiftFromDatabase(id) + fun getCurrentShift(id: Long) = repository.readSingleShiftFromDatabase(id)?.convertToShiftObject() open fun setFiltrationDetails( description: String?,