From 5fc9567cfa6b6beee4f52a9f835f304865d693e1 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 10 四月 2025 18:13:58 +0800
Subject: [PATCH] add: 消息提醒后版本

---
 app/src/main/java/com/example/firstapp/database/AppDatabase.kt |  131 ++++++++++++++++++++++++++++++++++---------
 1 files changed, 103 insertions(+), 28 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
index 42a1399..99792b8 100644
--- a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
+++ b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
@@ -8,27 +8,44 @@
 import androidx.room.migration.Migration
 import androidx.sqlite.db.SupportSQLiteDatabase
 import com.example.firstapp.database.dao.CodeDao
+import com.example.firstapp.database.dao.KeywordDao
 import com.example.firstapp.database.dao.MsgDao
 import com.example.firstapp.database.entity.Code
+import com.example.firstapp.database.entity.KeywordEntity
 import com.example.firstapp.database.entity.Msg
 import com.example.firstapp.utils.DATABASE_NAME
-import com.example.firstapp.utils.SettingUtils
-import com.example.firstapp.utils.TAG_LIST
 
 import com.example.firstapp.database.ext.ConvertersDate
-
+import com.example.firstapp.model.CourierStat
+import com.example.firstapp.model.DailyStat
+import com.example.firstapp.database.dao.ReminderDao
+import com.example.firstapp.database.dao.ReminderRecordDao
+import com.example.firstapp.database.entity.Reminder
+import com.example.firstapp.database.entity.ReminderRecord
 
 
 @Database(
-    entities = [ Msg::class, Code::class],
-//    views = [LogsDetail::class],
-    version = 19,
+    entities = [
+        Msg::class, 
+        Code::class, 
+        KeywordEntity::class,
+        Reminder::class,
+        ReminderRecord::class
+    ],
+    views = [
+        CourierStat::class,
+        DailyStat::class
+    ],
+    version = 21,
     exportSchema = false
 )
 @TypeConverters(ConvertersDate::class)
 abstract class AppDatabase : RoomDatabase() {
     abstract fun msgDao(): MsgDao
     abstract fun codeDao(): CodeDao
+    abstract fun keywordDao(): KeywordDao
+    abstract fun reminderDao(): ReminderDao
+    abstract fun reminderRecordDao(): ReminderRecordDao
 
     companion object {
         @Volatile
@@ -49,8 +66,8 @@
 
                     }
                 }).addMigrations(
-
                     MIGRATION_MSG,
+                    MIGRATION_20_21
                 )
 
             /*if (BuildConfig.DEBUG) {
@@ -66,36 +83,94 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
         private val MIGRATION_MSG = object : Migration(19, 20) {
             override fun migrate(database: SupportSQLiteDatabase) {
                 //database.execSQL("Create table Msg as Select id,type,`from`,content,(case when sim_info like 'SIM1%' then '0' when sim_info like 'SIM2%' then '1' else '-1' end) as sim_slot,sim_info,sub_id,time from Logs where 1 = 1")
                 database.execSQL(
                     """
-CREATE TABLE "Msg" (
-  "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
-  "type" TEXT NOT NULL DEFAULT 'sms',
-  "from" TEXT NOT NULL DEFAULT '',
-  "content" TEXT NOT NULL DEFAULT '',
-  "sim_slot" INTEGER NOT NULL DEFAULT -1,
-  "sim_info" TEXT NOT NULL DEFAULT '',
-  "sub_id" INTEGER NOT NULL DEFAULT 0,
-  "time" INTEGER NOT NULL
-)
-""".trimIndent()
+                    CREATE TABLE "Msg" (
+                      "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
+                      "type" TEXT NOT NULL DEFAULT 'sms',
+                      "from" TEXT NOT NULL DEFAULT '',
+                      "content" TEXT NOT NULL DEFAULT '',
+                      "sim_slot" INTEGER NOT NULL DEFAULT -1,
+                      "sim_info" TEXT NOT NULL DEFAULT '',
+                      "sub_id" INTEGER NOT NULL DEFAULT 0,
+                      "time" INTEGER NOT NULL
+                    )
+                """.trimIndent()
                 )
 
                 database.execSQL("CREATE UNIQUE INDEX \"index_Msg_id\" ON \"Msg\" ( \"id\" ASC)")
 
+                // 新增 KeywordEntity 表的创建逻辑
+                database.execSQL("""
+                    CREATE TABLE IF NOT EXISTS `keywords` (
+                        `id` INTEGER PRIMARY KEY AUTOINCREMENT, 
+                        `keyword` TEXT NOT NULL, 
+                        `type` TEXT NOT NULL, 
+                        `isEnabled` INTEGER NOT NULL
+                    )
+                """)
+
+                // 创建 CourierStat 视图
+                database.execSQL("""
+                    CREATE VIEW IF NOT EXISTS CourierStat AS
+                    SELECT courierName, COUNT(*) as count 
+                    FROM packages 
+                    GROUP BY courierName
+                """)
+
+                // 创建 DailyStat 视图
+                database.execSQL("""
+                    CREATE VIEW IF NOT EXISTS DailyStat AS
+                    SELECT date(receivedTime/1000, 'unixepoch', 'localtime') as date, 
+                           COUNT(*) as count 
+                    FROM packages 
+                    GROUP BY date(receivedTime/1000, 'unixepoch', 'localtime')
+                """)
+//                database.execSQL("""
+//                   CREATE TABLE   IF NOT EXISTS `reminders` (
+//                    id INTEGER PRIMARY KEY AUTOINCREMENT,
+//                    type TEXT NOT NULL,
+//                    nickname TEXT NOT NULL,
+//                    keywords TEXT NOT NULL,
+//                );
+//                """)
+
+            }
+        }
+
+        private val MIGRATION_20_21 = object : Migration(20, 21) {
+            override fun migrate(database: SupportSQLiteDatabase) {
+                // 创建 reminders 表
+                database.execSQL(
+                    """
+                    CREATE TABLE IF NOT EXISTS reminders (
+                        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
+                        categoryId INTEGER NOT NULL,
+                        categoryName TEXT NOT NULL,
+                        notificationMethod TEXT NOT NULL,
+                        isEnabled INTEGER NOT NULL DEFAULT 1,
+                        createdAt INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)
+                    )
+                    """
+                )
+
+                // 创建 reminder_records 表
+                database.execSQL(
+                    """
+                    CREATE TABLE IF NOT EXISTS reminder_records (
+                        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
+                        categoryId INTEGER NOT NULL,
+                        categoryName TEXT NOT NULL,
+                        content TEXT NOT NULL,
+                        notificationMethod TEXT NOT NULL,
+                        status INTEGER NOT NULL DEFAULT 0,
+                        createdAt INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)
+                    )
+                    """
+                )
             }
         }
 

--
Gitblit v1.9.3