From 0cf3f33529480de3d84537fe8f9b98f21f7d1441 Mon Sep 17 00:00:00 2001
From: Khaleeq <khaleeq.khan@hotmail.de>
Date: Sat, 14 Sep 2024 14:33:03 +0200
Subject: [PATCH] Task ViewModel,

---
 .../pomo/myapplication/timerroom/Database.kt  | 28 +++++++++++++++++++
 .../pomo/myapplication/timerroom/TaskDao.kt   | 23 +++++++++++++++
 .../myapplication/timerroom/TaskEntity.kt     | 13 +++++++++
 3 files changed, 64 insertions(+)
 create mode 100644 app/src/main/java/com/pomo/myapplication/timerroom/Database.kt
 create mode 100644 app/src/main/java/com/pomo/myapplication/timerroom/TaskDao.kt
 create mode 100644 app/src/main/java/com/pomo/myapplication/timerroom/TaskEntity.kt

diff --git a/app/src/main/java/com/pomo/myapplication/timerroom/Database.kt b/app/src/main/java/com/pomo/myapplication/timerroom/Database.kt
new file mode 100644
index 0000000..afa3c3d
--- /dev/null
+++ b/app/src/main/java/com/pomo/myapplication/timerroom/Database.kt
@@ -0,0 +1,28 @@
+package com.pomo.myapplication.timerroom
+
+import android.content.Context
+import androidx.room.Database
+import androidx.room.Room
+import androidx.room.RoomDatabase
+
+@Database(entities = [Task::class], version = 1)
+abstract class TaskDatabase : RoomDatabase() {
+    abstract fun taskDao(): TaskDao
+
+    companion object {
+        @Volatile
+        private var INSTANCE: TaskDatabase? = null
+
+        fun getDatabase(context: Context): TaskDatabase {
+            return INSTANCE ?: synchronized(this) {
+                val instance = Room.databaseBuilder(
+                    context.applicationContext,
+                    TaskDatabase::class.java,
+                    "task_database"
+                ).build()
+                INSTANCE = instance
+                instance
+            }
+        }
+    }
+}
diff --git a/app/src/main/java/com/pomo/myapplication/timerroom/TaskDao.kt b/app/src/main/java/com/pomo/myapplication/timerroom/TaskDao.kt
new file mode 100644
index 0000000..3abd6db
--- /dev/null
+++ b/app/src/main/java/com/pomo/myapplication/timerroom/TaskDao.kt
@@ -0,0 +1,23 @@
+package com.pomo.myapplication.timerroom
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.Update
+import com.pomo.myapplication.Task
+import androidx.room.*
+
+@Dao
+interface TaskDao {
+    @Query("SELECT * FROM tasks")
+    suspend fun getAllTasks(): List<Task>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insertTask(task: Task)
+
+    @Delete
+    suspend fun deleteTask(task: Task)
+
+    @Update
+    suspend fun updateTask(task: Task)
+}
diff --git a/app/src/main/java/com/pomo/myapplication/timerroom/TaskEntity.kt b/app/src/main/java/com/pomo/myapplication/timerroom/TaskEntity.kt
new file mode 100644
index 0000000..e973a09
--- /dev/null
+++ b/app/src/main/java/com/pomo/myapplication/timerroom/TaskEntity.kt
@@ -0,0 +1,13 @@
+package com.pomo.myapplication.timerroom
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "tasks")
+data class Task(
+    @PrimaryKey(autoGenerate = true)
+    val id: Int = 0,
+    val description: String,
+    val time: String,
+    val isCompleted: Boolean
+)
-- 
GitLab