zhujie
10 天以前 f980c833f832c42094cf78005aab5d0eb014c8ec
app/src/main/java/com/example/firstapp/database/AppDatabase.kt
@@ -14,17 +14,29 @@
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, KeywordEntity::class],
//    views = [LogsDetail::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)
@@ -32,6 +44,8 @@
    abstract fun msgDao(): MsgDao
    abstract fun codeDao(): CodeDao
    abstract fun keywordDao(): KeywordDao
    abstract fun reminderDao(): ReminderDao
    abstract fun reminderRecordDao(): ReminderRecordDao
    companion object {
        @Volatile
@@ -52,8 +66,8 @@
                    }
                }).addMigrations(
                    MIGRATION_MSG,
                    MIGRATION_20_21
                )
            /*if (BuildConfig.DEBUG) {
@@ -64,16 +78,6 @@
            return builder.build()
        }
@@ -109,6 +113,64 @@
                    )
                """)
                // 创建 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)
                    )
                    """
                )
            }
        }