From af3730ad51e2af6588d5dac573b036637c2048a6 Mon Sep 17 00:00:00 2001 From: pratxks <101081557+pratxks@users.noreply.github.com> Date: Sun, 5 Mar 2023 10:11:10 +0530 Subject: [PATCH] My Code Review Suggestions. --- app/src/main/AndroidManifest.xml | 7 ++++++ .../com/medmapper/v33001/dao/DateConverter.kt | 17 ++++++++++++++ .../com/medmapper/v33001/dao/MedicineDAO.kt | 9 ++++++-- .../java/com/medmapper/v33001/dto/Medicine.kt | 5 +++- .../v33001/repository/MedicineRepository.kt | 23 +++++++++++++------ .../v33001/room/MedicineRoomDatabase.kt | 5 +++- 6 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/medmapper/v33001/dao/DateConverter.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..122ad5b --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/medmapper/v33001/dao/DateConverter.kt b/app/src/main/java/com/medmapper/v33001/dao/DateConverter.kt new file mode 100644 index 0000000..0ae82ca --- /dev/null +++ b/app/src/main/java/com/medmapper/v33001/dao/DateConverter.kt @@ -0,0 +1,17 @@ +package com.medmapper.v33001.dao + +import androidx.room.TypeConverter +import java.util.Date + +class DateConverter { + @TypeConverter + fun fromTimestamp(value: Long?): Date? { + return value?.let { Date(it) } + } + + @TypeConverter + fun dateToTimestamp(date: Date?): Long? { + return date?.time + } +} + diff --git a/app/src/main/java/com/medmapper/v33001/dao/MedicineDAO.kt b/app/src/main/java/com/medmapper/v33001/dao/MedicineDAO.kt index 271f155..2b29934 100644 --- a/app/src/main/java/com/medmapper/v33001/dao/MedicineDAO.kt +++ b/app/src/main/java/com/medmapper/v33001/dao/MedicineDAO.kt @@ -6,12 +6,17 @@ import kotlinx.coroutines.flow.Flow @Dao interface MedicineDAO { + @Query("SELECT * FROM Medicine ORDER BY name ASC") fun getAlphabetizedMedicine(): Flow> @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun insert(medicine: Medicine) - @Query("DELETE FROM Medicine") - suspend fun deleteAll() + @Delete + suspend fun delete(medicine: Medicine) + + @Update + suspend fun update(medicine: Medicine) + } \ No newline at end of file diff --git a/app/src/main/java/com/medmapper/v33001/dto/Medicine.kt b/app/src/main/java/com/medmapper/v33001/dto/Medicine.kt index 8094740..d9fc56a 100644 --- a/app/src/main/java/com/medmapper/v33001/dto/Medicine.kt +++ b/app/src/main/java/com/medmapper/v33001/dto/Medicine.kt @@ -3,13 +3,16 @@ package com.medmapper.v33001.dto import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +import androidx.room.TypeConverters +import com.medmapper.v33001.dao.DateConverter @Entity(tableName = "Medicine") +@TypeConverters(DateConverter::class) data class Medicine( @PrimaryKey(autoGenerate = true) val medID: Int, @ColumnInfo(name = "name") val name: String?, @ColumnInfo(name = "strength") val strength: String?, - @ColumnInfo(name = "start date") val startDate: String?, + @ColumnInfo(name = "start_date") val startDate: String?, @ColumnInfo(name = "prescription length") val lengthInDays: Int //,@ColumnInfo() val endDate: Date = startDate ) \ No newline at end of file diff --git a/app/src/main/java/com/medmapper/v33001/repository/MedicineRepository.kt b/app/src/main/java/com/medmapper/v33001/repository/MedicineRepository.kt index c2f8470..8ae8b24 100644 --- a/app/src/main/java/com/medmapper/v33001/repository/MedicineRepository.kt +++ b/app/src/main/java/com/medmapper/v33001/repository/MedicineRepository.kt @@ -11,14 +11,23 @@ class MedicineRepository(private val medicineDAO: MedicineDAO) { // Room executes all queries on a separate thread. // Observed Flow will notify the observer when the data has changed. - val allMedicines: Flow> = medicineDAO.getAlphabetizedMedicine() - // By default Room runs suspend queries off the main thread, therefore - // we don't need to implement anything else to ensure we're not doing - // long running database work off the main thread - @Suppress("RedundantSuspendModifier") - @WorkerThread + val allMedicine: Flow> = medicineDAO.getAlphabetizedMedicine() + + fun getMedicineList(): Flow> { + return medicineDAO.getAlphabetizedMedicine() + } + suspend fun insert(medicine: Medicine) { medicineDAO.insert(medicine) } -} \ No newline at end of file + + suspend fun delete(medicine: Medicine) { + medicineDAO.delete(medicine) + } + + suspend fun update(medicine: Medicine) { + medicineDAO.update(medicine) + } + +} diff --git a/app/src/main/java/com/medmapper/v33001/room/MedicineRoomDatabase.kt b/app/src/main/java/com/medmapper/v33001/room/MedicineRoomDatabase.kt index a37fcf9..e386714 100644 --- a/app/src/main/java/com/medmapper/v33001/room/MedicineRoomDatabase.kt +++ b/app/src/main/java/com/medmapper/v33001/room/MedicineRoomDatabase.kt @@ -4,10 +4,13 @@ import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import com.medmapper.v33001.dao.DateConverter import com.medmapper.v33001.dao.MedicineDAO import com.medmapper.v33001.dto.Medicine -@Database(entities = arrayOf(Medicine::class), version = 1, exportSchema = false) +@Database(entities = [Medicine::class], version = 1, exportSchema = false) +@TypeConverters(DateConverter::class) public abstract class MedicineRoomDatabase : RoomDatabase() { abstract fun medicineDao(): MedicineDAO