cloudroam
2025-04-10 5fc9567cfa6b6beee4f52a9f835f304865d693e1
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)
                    )
                    """
                )
            }
        }
    }
}