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 |   88 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 70 insertions(+), 18 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 2251240..99792b8 100644
--- a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
+++ b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
@@ -10,22 +10,33 @@
 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.dao.ReminderDao
 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.database.entity.Reminder
 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, KeywordEntity::class, Reminder::class],
-    version = 20,
+    entities = [
+        Msg::class, 
+        Code::class, 
+        KeywordEntity::class,
+        Reminder::class,
+        ReminderRecord::class
+    ],
+    views = [
+        CourierStat::class,
+        DailyStat::class
+    ],
+    version = 21,
     exportSchema = false
 )
 @TypeConverters(ConvertersDate::class)
@@ -34,6 +45,7 @@
     abstract fun codeDao(): CodeDao
     abstract fun keywordDao(): KeywordDao
     abstract fun reminderDao(): ReminderDao
+    abstract fun reminderRecordDao(): ReminderRecordDao
 
     companion object {
         @Volatile
@@ -54,8 +66,8 @@
 
                     }
                 }).addMigrations(
-
                     MIGRATION_MSG,
+                    MIGRATION_20_21
                 )
 
             /*if (BuildConfig.DEBUG) {
@@ -66,16 +78,6 @@
 
             return builder.build()
         }
-
-
-
-
-
-
-
-
-
-
 
 
 
@@ -110,6 +112,23 @@
                         `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,
@@ -122,6 +141,39 @@
             }
         }
 
+        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