Przeglądaj źródła

Replace history query with actual upsert

arkon 2 lat temu
rodzic
commit
cd0294b1b6

+ 7 - 0
app/build.gradle.kts

@@ -136,6 +136,13 @@ android {
     kotlinOptions {
         jvmTarget = JavaVersion.VERSION_1_8.toString()
     }
+
+    sqldelight {
+        database("Database") {
+            packageName = "eu.kanade.tachiyomi"
+            dialect = "sqlite:3.24"
+        }
+    }
 }
 
 dependencies {

+ 6 - 16
app/src/main/java/eu/kanade/data/history/HistoryRepositoryImpl.kt

@@ -93,22 +93,12 @@ class HistoryRepositoryImpl(
 
     override suspend fun upsertHistory(historyUpdate: HistoryUpdate) {
         try {
-            try {
-                handler.await {
-                    historyQueries.insert(
-                        historyUpdate.chapterId,
-                        historyUpdate.readAt,
-                        historyUpdate.sessionReadDuration,
-                    )
-                }
-            } catch (e: Exception) {
-                handler.await {
-                    historyQueries.update(
-                        historyUpdate.readAt,
-                        historyUpdate.sessionReadDuration,
-                        historyUpdate.chapterId,
-                    )
-                }
+            handler.await {
+                historyQueries.upsert(
+                    historyUpdate.chapterId,
+                    historyUpdate.readAt,
+                    historyUpdate.sessionReadDuration,
+                )
             }
         } catch (e: Exception) {
             logcat(LogPriority.ERROR, throwable = e)

+ 0 - 10
app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt

@@ -30,16 +30,6 @@ interface HistoryQueries : DbProvider {
         )
         .prepare()
 
-    /**
-     * Updates the history last read.
-     * Inserts history object if not yet in database
-     * @param history history object
-     */
-    fun upsertHistoryLastRead(history: History) = db.put()
-        .`object`(history)
-        .withPutResolver(HistoryUpsertResolver())
-        .prepare()
-
     /**
      * Updates the history last read.
      * Inserts history object if not yet in database

+ 8 - 8
app/src/main/sqldelight/data/history.sq

@@ -36,12 +36,12 @@ removeResettedHistory:
 DELETE FROM history
 WHERE last_read = 0;
 
-insert:
+upsert:
 INSERT INTO history(chapter_id, last_read, time_read)
-VALUES (:chapterId, :readAt, :readDuration);
-
-update:
-UPDATE history
-SET last_read = :readAt,
-    time_read = time_read + :sessionReadDuration
-WHERE chapter_id = :chapterId;
+VALUES (:chapterId, :readAt, :time_read)
+ON CONFLICT(chapter_id)
+DO UPDATE
+SET
+    last_read = :readAt,
+    time_read = time_read + :time_read
+WHERE chapter_id = :chapterId;