From f38f3989e7e59d64a36e14415a22b974a323e909 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 18 Jul 2023 22:27:38 +0800 Subject: [PATCH] Tweak db migration, cleanup code Keep the time field in DownloadInfo for future sort by start / complete time function --- .../com.hippo.ehviewer.dao.EhDatabase/11.json | 22 +- .../com.hippo.ehviewer.dao.EhDatabase/12.json | 34 +- .../com.hippo.ehviewer.dao.EhDatabase/13.json | 469 ------------------ .../java/com/hippo/ehviewer/dao/Database.kt | 28 +- .../com/hippo/ehviewer/dao/DownloadInfo.kt | 2 +- .../com/hippo/ehviewer/dao/DownloadLabel.kt | 6 +- .../com/hippo/ehviewer/dao/QuickSearch.kt | 5 +- .../ehviewer/download/DownloadManager.kt | 4 +- 8 files changed, 45 insertions(+), 525 deletions(-) delete mode 100644 app/schemas/com.hippo.ehviewer.dao.EhDatabase/13.json diff --git a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/11.json b/app/schemas/com.hippo.ehviewer.dao.EhDatabase/11.json index 20e70dafd..f532eaea4 100644 --- a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/11.json +++ b/app/schemas/com.hippo.ehviewer.dao.EhDatabase/11.json @@ -2,11 +2,11 @@ "formatVersion": 1, "database": { "version": 11, - "identityHash": "ae2e43e12a77ce0d90ac30c9a7f79e5d", + "identityHash": "92915e937cb7ccc536d352fda5cf287f", "entities": [ { "tableName": "DOWNLOADS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `POSITION` INTEGER NOT NULL DEFAULT 0, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", "fields": [ { "fieldPath": "state", @@ -32,6 +32,13 @@ "affinity": "TEXT", "notNull": false }, + { + "fieldPath": "position", + "columnName": "POSITION", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, { "fieldPath": "gid", "columnName": "GID", @@ -104,7 +111,7 @@ }, { "tableName": "DOWNLOAD_LABELS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `TIME` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `TIME` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL DEFAULT 0, `_id` INTEGER, PRIMARY KEY(`_id`))", "fields": [ { "fieldPath": "label", @@ -118,6 +125,13 @@ "affinity": "INTEGER", "notNull": true }, + { + "fieldPath": "position", + "columnName": "POSITION", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, { "fieldPath": "id", "columnName": "_id", @@ -449,7 +463,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ae2e43e12a77ce0d90ac30c9a7f79e5d')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '92915e937cb7ccc536d352fda5cf287f')" ] } } \ No newline at end of file diff --git a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/12.json b/app/schemas/com.hippo.ehviewer.dao.EhDatabase/12.json index 3bd999df6..6daa40308 100644 --- a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/12.json +++ b/app/schemas/com.hippo.ehviewer.dao.EhDatabase/12.json @@ -2,11 +2,11 @@ "formatVersion": 1, "database": { "version": 12, - "identityHash": "db1bcec4e605d5da70726d57ed3f203b", + "identityHash": "d40b38b0ba3b1c53b773728cdee328c8", "entities": [ { "tableName": "DOWNLOADS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `POSITION` INTEGER NOT NULL, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", "fields": [ { "fieldPath": "state", @@ -32,6 +32,12 @@ "affinity": "TEXT", "notNull": false }, + { + "fieldPath": "position", + "columnName": "POSITION", + "affinity": "INTEGER", + "notNull": true + }, { "fieldPath": "gid", "columnName": "GID", @@ -104,7 +110,7 @@ }, { "tableName": "DOWNLOAD_LABELS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `TIME` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL DEFAULT 0, `_id` INTEGER, PRIMARY KEY(`_id`))", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))", "fields": [ { "fieldPath": "label", @@ -112,18 +118,11 @@ "affinity": "TEXT", "notNull": true }, - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, { "fieldPath": "position", "columnName": "POSITION", "affinity": "INTEGER", - "notNull": true, - "defaultValue": "0" + "notNull": true }, { "fieldPath": "id", @@ -373,7 +372,7 @@ }, { "tableName": "QUICK_SEARCH", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`_id`))", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))", "fields": [ { "fieldPath": "id", @@ -429,18 +428,11 @@ "affinity": "INTEGER", "notNull": true }, - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, { "fieldPath": "position", "columnName": "POSITION", "affinity": "INTEGER", - "notNull": true, - "defaultValue": "0" + "notNull": true } ], "primaryKey": { @@ -456,7 +448,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'db1bcec4e605d5da70726d57ed3f203b')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd40b38b0ba3b1c53b773728cdee328c8')" ] } } \ No newline at end of file diff --git a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/13.json b/app/schemas/com.hippo.ehviewer.dao.EhDatabase/13.json deleted file mode 100644 index 07d771bbd..000000000 --- a/app/schemas/com.hippo.ehviewer.dao.EhDatabase/13.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 13, - "identityHash": "92915e937cb7ccc536d352fda5cf287f", - "entities": [ - { - "tableName": "DOWNLOADS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `POSITION` INTEGER NOT NULL DEFAULT 0, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", - "fields": [ - { - "fieldPath": "state", - "columnName": "STATE", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "legacy", - "columnName": "LEGACY", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "label", - "columnName": "LABEL", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "position", - "columnName": "POSITION", - "affinity": "INTEGER", - "notNull": true, - "defaultValue": "0" - }, - { - "fieldPath": "gid", - "columnName": "GID", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "token", - "columnName": "TOKEN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "title", - "columnName": "TITLE", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "titleJpn", - "columnName": "TITLE_JPN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "thumbKey", - "columnName": "THUMB", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "category", - "columnName": "CATEGORY", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "posted", - "columnName": "POSTED", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "uploader", - "columnName": "UPLOADER", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "rating", - "columnName": "RATING", - "affinity": "REAL", - "notNull": true - }, - { - "fieldPath": "simpleLanguage", - "columnName": "SIMPLE_LANGUAGE", - "affinity": "TEXT", - "notNull": false - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "GID" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "DOWNLOAD_LABELS", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `TIME` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL DEFAULT 0, `_id` INTEGER, PRIMARY KEY(`_id`))", - "fields": [ - { - "fieldPath": "label", - "columnName": "LABEL", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "position", - "columnName": "POSITION", - "affinity": "INTEGER", - "notNull": true, - "defaultValue": "0" - }, - { - "fieldPath": "id", - "columnName": "_id", - "affinity": "INTEGER", - "notNull": false - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "_id" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "DOWNLOAD_DIRNAME", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))", - "fields": [ - { - "fieldPath": "gid", - "columnName": "GID", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "dirname", - "columnName": "DIRNAME", - "affinity": "TEXT", - "notNull": true - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "GID" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "FILTER", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))", - "fields": [ - { - "fieldPath": "mode", - "columnName": "MODE", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "text", - "columnName": "TEXT", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "enable", - "columnName": "ENABLE", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "id", - "columnName": "_id", - "affinity": "INTEGER", - "notNull": false - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "_id" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "HISTORY", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`TIME` INTEGER NOT NULL, `FAVORITE_SLOT` INTEGER NOT NULL, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", - "fields": [ - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "favoriteSlot", - "columnName": "FAVORITE_SLOT", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "gid", - "columnName": "GID", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "token", - "columnName": "TOKEN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "title", - "columnName": "TITLE", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "titleJpn", - "columnName": "TITLE_JPN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "thumbKey", - "columnName": "THUMB", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "category", - "columnName": "CATEGORY", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "posted", - "columnName": "POSTED", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "uploader", - "columnName": "UPLOADER", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "rating", - "columnName": "RATING", - "affinity": "REAL", - "notNull": true - }, - { - "fieldPath": "simpleLanguage", - "columnName": "SIMPLE_LANGUAGE", - "affinity": "TEXT", - "notNull": false - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "GID" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "LOCAL_FAVORITES", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`TIME` INTEGER NOT NULL, `GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, PRIMARY KEY(`GID`))", - "fields": [ - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "gid", - "columnName": "GID", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "token", - "columnName": "TOKEN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "title", - "columnName": "TITLE", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "titleJpn", - "columnName": "TITLE_JPN", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "thumbKey", - "columnName": "THUMB", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "category", - "columnName": "CATEGORY", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "posted", - "columnName": "POSTED", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "uploader", - "columnName": "UPLOADER", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "rating", - "columnName": "RATING", - "affinity": "REAL", - "notNull": true - }, - { - "fieldPath": "simpleLanguage", - "columnName": "SIMPLE_LANGUAGE", - "affinity": "TEXT", - "notNull": false - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "GID" - ] - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "QUICK_SEARCH", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`_id`))", - "fields": [ - { - "fieldPath": "id", - "columnName": "_id", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "name", - "columnName": "NAME", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "mode", - "columnName": "MODE", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "category", - "columnName": "CATEGORY", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "keyword", - "columnName": "KEYWORD", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "advanceSearch", - "columnName": "ADVANCE_SEARCH", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "minRating", - "columnName": "MIN_RATING", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "pageFrom", - "columnName": "PAGE_FROM", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "pageTo", - "columnName": "PAGE_TO", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "time", - "columnName": "TIME", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "position", - "columnName": "POSITION", - "affinity": "INTEGER", - "notNull": true, - "defaultValue": "0" - } - ], - "primaryKey": { - "autoGenerate": false, - "columnNames": [ - "_id" - ] - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '92915e937cb7ccc536d352fda5cf287f')" - ] - } -} \ No newline at end of file diff --git a/app/src/main/java/com/hippo/ehviewer/dao/Database.kt b/app/src/main/java/com/hippo/ehviewer/dao/Database.kt index 0c9c72b9b..a70e627a4 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/Database.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/Database.kt @@ -2,6 +2,7 @@ package com.hippo.ehviewer.dao import androidx.room.AutoMigration import androidx.room.Database +import androidx.room.DeleteColumn import androidx.room.DeleteTable import androidx.room.RenameColumn import androidx.room.RoomDatabase @@ -19,24 +20,18 @@ class HistoryMigration : AutoMigrationSpec { } } -class QuickSearchMigration : AutoMigrationSpec { +class AddPositionColumn : AutoMigrationSpec { override fun onPostMigrate(db: SupportSQLiteDatabase) { db.execSQL("UPDATE QUICK_SEARCH SET POSITION = (SELECT COUNT(*) FROM QUICK_SEARCH T WHERE T.TIME < QUICK_SEARCH.TIME)") - } -} - -class DownloadLabelMigration : AutoMigrationSpec { - override fun onPostMigrate(db: SupportSQLiteDatabase) { db.execSQL("UPDATE DOWNLOAD_LABELS SET POSITION = (SELECT COUNT(*) FROM DOWNLOAD_LABELS T WHERE T.TIME < DOWNLOAD_LABELS.TIME)") - } -} - -class DownloadMigration : AutoMigrationSpec { - override fun onPostMigrate(db: SupportSQLiteDatabase) { db.execSQL("UPDATE DOWNLOADS SET POSITION = (SELECT COUNT(*) FROM DOWNLOADS T WHERE T.TIME < DOWNLOADS.TIME)") } } +@DeleteColumn(tableName = "QUICK_SEARCH", columnName = "TIME") +@DeleteColumn(tableName = "DOWNLOAD_LABELS", columnName = "TIME") +class DropTimeColumn : AutoMigrationSpec + class ThumbKeyMigration : AutoMigrationSpec { override fun onPostMigrate(db: SupportSQLiteDatabase) { val needMigrationTables = arrayOf( @@ -59,7 +54,7 @@ class ThumbKeyMigration : AutoMigrationSpec { @Database( entities = [DownloadInfo::class, DownloadLabel::class, DownloadDirname::class, Filter::class, HistoryInfo::class, LocalFavoriteInfo::class, QuickSearch::class], - version = 13, + version = 12, exportSchema = true, autoMigrations = [ AutoMigration( @@ -92,17 +87,12 @@ class ThumbKeyMigration : AutoMigrationSpec { AutoMigration( from = 10, to = 11, - spec = QuickSearchMigration::class, + spec = AddPositionColumn::class, ), AutoMigration( from = 11, to = 12, - spec = DownloadLabelMigration::class, - ), - AutoMigration( - from = 12, - to = 13, - spec = DownloadMigration::class, + spec = DropTimeColumn::class, ), ], ) diff --git a/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt b/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt index 8f34a351b..bc3cfe267 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/DownloadInfo.kt @@ -20,7 +20,7 @@ class DownloadInfo() : BaseGalleryInfo() { @ColumnInfo(name = "LABEL") var label: String? = null - @ColumnInfo(name = "POSITION", defaultValue = "0") + @ColumnInfo(name = "POSITION") var position: Int = 0 @Ignore diff --git a/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabel.kt b/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabel.kt index 95e87e81d..1dbbdce68 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabel.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabel.kt @@ -3,17 +3,13 @@ package com.hippo.ehviewer.dao import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import java.time.Instant @Entity(tableName = "DOWNLOAD_LABELS") data class DownloadLabel( @ColumnInfo(name = "LABEL") var label: String, - @ColumnInfo(name = "TIME") - var time: Long = Instant.now().toEpochMilli(), - - @ColumnInfo(name = "POSITION", defaultValue = "0") + @ColumnInfo(name = "POSITION") var position: Int, @PrimaryKey diff --git a/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt b/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt index 4f6d5e9ba..83e8ce4db 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt @@ -34,9 +34,6 @@ data class QuickSearch( @ColumnInfo(name = "PAGE_TO") var pageTo: Int = 0, - @ColumnInfo(name = "TIME") - var time: Long = 0, - - @ColumnInfo(name = "POSITION", defaultValue = "0") + @ColumnInfo(name = "POSITION") var position: Int = 0, ) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt index 432c18377..77a6516fb 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt @@ -84,7 +84,7 @@ object DownloadManager : OnSpiderListener { it.key?.let { label -> if (!containLabel(label)) { // Add non existing label to DB and list - labelList.add(EhDB.addDownloadLabel(DownloadLabel(label, position = labelList.size))) + labelList.add(EhDB.addDownloadLabel(DownloadLabel(label, labelList.size))) } } it.key to LinkedList(it.value) @@ -677,7 +677,7 @@ object DownloadManager : OnSpiderListener { if (label == null || containLabel(label)) { return } - labelList.add(EhDB.addDownloadLabel(DownloadLabel(label, position = labelList.size))) + labelList.add(EhDB.addDownloadLabel(DownloadLabel(label, labelList.size))) map[label] = LinkedList() }