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 | 89 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 70 insertions(+), 19 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 8c2b7c0..99792b8 100644 --- a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt +++ b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt @@ -1,6 +1,5 @@ package com.example.firstapp - import android.content.Context import androidx.room.Database import androidx.room.Room @@ -11,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) @@ -35,6 +45,7 @@ abstract fun codeDao(): CodeDao abstract fun keywordDao(): KeywordDao abstract fun reminderDao(): ReminderDao + abstract fun reminderRecordDao(): ReminderRecordDao companion object { @Volatile @@ -55,8 +66,8 @@ } }).addMigrations( - MIGRATION_MSG, + MIGRATION_20_21 ) /*if (BuildConfig.DEBUG) { @@ -67,16 +78,6 @@ return builder.build() } - - - - - - - - - - @@ -111,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, @@ -123,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