From daa997265191b4726bcb06869dd341f5d7afaf41 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Sat, 11 Jan 2025 10:17:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 +- .../main/kotlin/cn/super12138/todo/TodoApp.kt | 17 +++++++++++ .../cn/super12138/todo/logic/Repository.kt | 20 +++++++++++++ .../super12138/todo/logic/database/TodoDao.kt | 19 ++++++++++++ .../todo/logic/database/TodoDatabase.kt | 30 +++++++++++++++++++ .../todo/logic/database/TodoEntity.kt | 14 +++++++++ 6 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/cn/super12138/todo/TodoApp.kt create mode 100644 app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt create mode 100644 app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt create mode 100644 app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDatabase.kt create mode 100644 app/src/main/kotlin/cn/super12138/todo/logic/database/TodoEntity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9aa3ce1..06f87b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools"> + tools:targetApi="35"> > = toDoDao.getAll() + + suspend fun updateTodo(toDo: TodoEntity){ + toDoDao.update(toDo) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt new file mode 100644 index 0000000..942624f --- /dev/null +++ b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDao.kt @@ -0,0 +1,19 @@ +package cn.super12138.todo.logic.database + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import kotlinx.coroutines.flow.Flow + +@Dao +interface TodoDao { + @Insert + suspend fun insert(toDo: TodoEntity) + + @Query("SELECT * FROM todo") + fun getAll(): Flow> + + @Update + suspend fun update(toDo: TodoEntity) +} \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDatabase.kt b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDatabase.kt new file mode 100644 index 0000000..8f72c65 --- /dev/null +++ b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoDatabase.kt @@ -0,0 +1,30 @@ +package cn.super12138.todo.logic.database + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase + +@Database(entities = [TodoEntity::class], version = 2) +abstract class TodoDatabase : RoomDatabase() { + abstract fun toDoDao(): TodoDao + + companion object { + @Volatile + private var INSTANCE: TodoDatabase? = null + fun getDatabase(context: Context): TodoDatabase { + return INSTANCE ?: synchronized(this) { + val instance = Room.databaseBuilder( + context.applicationContext, + TodoDatabase::class.java, + "todo" + ) + .fallbackToDestructiveMigration() + .build() + + INSTANCE = instance + return instance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoEntity.kt b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoEntity.kt new file mode 100644 index 0000000..b4ffcb0 --- /dev/null +++ b/app/src/main/kotlin/cn/super12138/todo/logic/database/TodoEntity.kt @@ -0,0 +1,14 @@ +package cn.super12138.todo.logic.database + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "todo") +data class TodoEntity( + @ColumnInfo(name = "type") val type: Int, + @ColumnInfo(name = "content") val content: String, + @ColumnInfo(name = "subject") val subject: String, + @ColumnInfo(name = "completed") val isCompleted: Boolean = false, + @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Long = 0L, +)