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