- mid commit

This commit is contained in:
2023-09-16 21:30:52 +01:00
parent 90c68e24fd
commit a12b922c8e
5 changed files with 42 additions and 21 deletions

View File

@@ -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,

View File

@@ -20,18 +20,18 @@ interface ShiftDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun upsertListOfFullShift(items: List<ShiftEntity>)
@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<ShiftEntity>
@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<List<ShiftEntity>>
@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
}

View File

@@ -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,
) {

View File

@@ -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}'")
}
}

View File

@@ -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?,