more db fixes to crashes when exiting reader

oh i just cant wait to use room
This commit is contained in:
Jays2Kings 2023-10-25 15:20:05 -07:00
parent 55184dce10
commit 1ddcc77449
2 changed files with 9 additions and 8 deletions

View file

@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.database.queries
import com.pushtorefresh.storio.sqlite.queries.DeleteQuery import com.pushtorefresh.storio.sqlite.queries.DeleteQuery
import com.pushtorefresh.storio.sqlite.queries.RawQuery import com.pushtorefresh.storio.sqlite.queries.RawQuery
import eu.kanade.tachiyomi.data.database.DbProvider import eu.kanade.tachiyomi.data.database.DbProvider
import eu.kanade.tachiyomi.data.database.inTransactionReturn
import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.History
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
import eu.kanade.tachiyomi.data.database.resolvers.HistoryUpsertResolver import eu.kanade.tachiyomi.data.database.resolvers.HistoryUpsertResolver
@ -164,10 +165,12 @@ interface HistoryQueries : DbProvider {
* Inserts history object if not yet in database * Inserts history object if not yet in database
* @param historyList history object list * @param historyList history object list
*/ */
fun upsertHistoryLastRead(historyList: List<History>) = db.put() fun upsertHistoryLastRead(historyList: List<History>) = db.inTransactionReturn {
.objects(historyList) db.put()
.withPutResolver(HistoryUpsertResolver()) .objects(historyList)
.prepare() .withPutResolver(HistoryUpsertResolver())
.prepare()
}
fun deleteHistory() = db.delete() fun deleteHistory() = db.delete()
.byQuery( .byQuery(

View file

@ -1,12 +1,10 @@
package eu.kanade.tachiyomi.data.database.resolvers package eu.kanade.tachiyomi.data.database.resolvers
import androidx.annotation.NonNull
import androidx.core.content.contentValuesOf import androidx.core.content.contentValuesOf
import com.pushtorefresh.storio.sqlite.StorIOSQLite import com.pushtorefresh.storio.sqlite.StorIOSQLite
import com.pushtorefresh.storio.sqlite.operations.put.PutResult import com.pushtorefresh.storio.sqlite.operations.put.PutResult
import com.pushtorefresh.storio.sqlite.queries.Query import com.pushtorefresh.storio.sqlite.queries.Query
import com.pushtorefresh.storio.sqlite.queries.UpdateQuery import com.pushtorefresh.storio.sqlite.queries.UpdateQuery
import eu.kanade.tachiyomi.data.database.inTransactionReturn
import eu.kanade.tachiyomi.data.database.mappers.HistoryPutResolver import eu.kanade.tachiyomi.data.database.mappers.HistoryPutResolver
import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.History
import eu.kanade.tachiyomi.data.database.tables.HistoryTable import eu.kanade.tachiyomi.data.database.tables.HistoryTable
@ -16,7 +14,7 @@ class HistoryUpsertResolver : HistoryPutResolver() {
/** /**
* Updates last_read time of chapter * Updates last_read time of chapter
*/ */
override fun performPut(@NonNull db: StorIOSQLite, @NonNull history: History): PutResult = db.inTransactionReturn { override fun performPut(db: StorIOSQLite, history: History): PutResult {
val updateQuery = mapToUpdateQuery(history) val updateQuery = mapToUpdateQuery(history)
val cursor = db.lowLevel().query( val cursor = db.lowLevel().query(
@ -27,7 +25,7 @@ class HistoryUpsertResolver : HistoryPutResolver() {
.build(), .build(),
) )
cursor.use { putCursor -> return cursor.use { putCursor ->
if (putCursor.count == 0) { if (putCursor.count == 0) {
val insertQuery = mapToInsertQuery(history) val insertQuery = mapToInsertQuery(history)
val insertedId = db.lowLevel().insert(insertQuery, mapToContentValues(history)) val insertedId = db.lowLevel().insert(insertQuery, mapToContentValues(history))