mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 02:34:39 +00:00
refactor(db): Handle the addition from SQL directly instead from code
This commit is contained in:
parent
39428f8c79
commit
97eacbbaea
6 changed files with 5 additions and 9 deletions
|
@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.launchNow
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.data.DatabaseHandler
|
||||||
import yokai.domain.category.interactor.GetCategories
|
import yokai.domain.category.interactor.GetCategories
|
||||||
import yokai.domain.chapter.interactor.GetChapter
|
import yokai.domain.chapter.interactor.GetChapter
|
||||||
import yokai.domain.chapter.interactor.InsertChapter
|
import yokai.domain.chapter.interactor.InsertChapter
|
||||||
|
@ -33,6 +34,7 @@ import yokai.domain.track.interactor.GetTrack
|
||||||
class MangaBackupRestorer(
|
class MangaBackupRestorer(
|
||||||
private val db: DatabaseHelper = Injekt.get(),
|
private val db: DatabaseHelper = Injekt.get(),
|
||||||
private val customMangaManager: CustomMangaManager = Injekt.get(),
|
private val customMangaManager: CustomMangaManager = Injekt.get(),
|
||||||
|
private val handler: DatabaseHandler = Injekt.get(),
|
||||||
private val getCategories: GetCategories = Injekt.get(),
|
private val getCategories: GetCategories = Injekt.get(),
|
||||||
private val getChapter: GetChapter = Injekt.get(),
|
private val getChapter: GetChapter = Injekt.get(),
|
||||||
private val insertChapter: InsertChapter = Injekt.get(),
|
private val insertChapter: InsertChapter = Injekt.get(),
|
||||||
|
@ -208,7 +210,7 @@ class MangaBackupRestorer(
|
||||||
// List containing history to be updated
|
// List containing history to be updated
|
||||||
val historyToBeUpdated = ArrayList<History>(history.size)
|
val historyToBeUpdated = ArrayList<History>(history.size)
|
||||||
for ((url, lastRead, readDuration) in history) {
|
for ((url, lastRead, readDuration) in history) {
|
||||||
val dbHistory = getHistory.awaitByChapterUrl(url)
|
val dbHistory = handler.awaitOneOrNull { historyQueries.getByChapterUrl(url, History::mapper) }
|
||||||
// Check if history already in database and update
|
// Check if history already in database and update
|
||||||
if (dbHistory != null) {
|
if (dbHistory != null) {
|
||||||
dbHistory.apply {
|
dbHistory.apply {
|
||||||
|
|
|
@ -659,10 +659,9 @@ class ReaderViewModel(
|
||||||
if (!preferences.incognitoMode().get()) {
|
if (!preferences.incognitoMode().get()) {
|
||||||
val readAt = Date().time
|
val readAt = Date().time
|
||||||
val sessionReadDuration = chapterReadStartTime?.let { readAt - it } ?: 0
|
val sessionReadDuration = chapterReadStartTime?.let { readAt - it } ?: 0
|
||||||
val oldTimeRead = getHistory.awaitByChapterUrl(readerChapter.chapter.url)?.time_read ?: 0
|
|
||||||
val history = History.create(readerChapter.chapter).apply {
|
val history = History.create(readerChapter.chapter).apply {
|
||||||
last_read = readAt
|
last_read = readAt
|
||||||
time_read = sessionReadDuration + oldTimeRead
|
time_read = sessionReadDuration
|
||||||
}
|
}
|
||||||
upsertHistory.await(history)
|
upsertHistory.await(history)
|
||||||
chapterReadStartTime = null
|
chapterReadStartTime = null
|
||||||
|
|
|
@ -24,9 +24,6 @@ class HistoryRepositoryImpl(private val handler: DatabaseHandler) : HistoryRepos
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getByChapterUrl(chapterUrl: String): History? =
|
|
||||||
handler.awaitOneOrNull { historyQueries.getByChapterUrl(chapterUrl, History::mapper) }
|
|
||||||
|
|
||||||
override suspend fun getByMangaId(mangaId: Long): History? =
|
override suspend fun getByMangaId(mangaId: Long): History? =
|
||||||
handler.awaitOneOrNull { historyQueries.getByMangaId(mangaId, History::mapper) }
|
handler.awaitOneOrNull { historyQueries.getByMangaId(mangaId, History::mapper) }
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
|
||||||
interface HistoryRepository {
|
interface HistoryRepository {
|
||||||
suspend fun upsert(chapterId: Long, lastRead: Long, timeRead: Long): Long?
|
suspend fun upsert(chapterId: Long, lastRead: Long, timeRead: Long): Long?
|
||||||
suspend fun bulkUpsert(histories: List<History>)
|
suspend fun bulkUpsert(histories: List<History>)
|
||||||
suspend fun getByChapterUrl(chapterUrl: String): History?
|
|
||||||
suspend fun getByMangaId(mangaId: Long): History?
|
suspend fun getByMangaId(mangaId: Long): History?
|
||||||
suspend fun getAllByMangaId(mangaId: Long): List<History>
|
suspend fun getAllByMangaId(mangaId: Long): List<History>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import yokai.domain.history.HistoryRepository
|
||||||
class GetHistory(
|
class GetHistory(
|
||||||
private val historyRepository: HistoryRepository
|
private val historyRepository: HistoryRepository
|
||||||
) {
|
) {
|
||||||
suspend fun awaitByChapterUrl(chapterUrl: String) = historyRepository.getByChapterUrl(chapterUrl)
|
|
||||||
suspend fun awaitByMangaId(mangaId: Long) = historyRepository.getByMangaId(mangaId)
|
suspend fun awaitByMangaId(mangaId: Long) = historyRepository.getByMangaId(mangaId)
|
||||||
suspend fun awaitAllByMangaId(mangaId: Long) = historyRepository.getAllByMangaId(mangaId)
|
suspend fun awaitAllByMangaId(mangaId: Long) = historyRepository.getAllByMangaId(mangaId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ ON CONFLICT(history_chapter_id)
|
||||||
DO UPDATE
|
DO UPDATE
|
||||||
SET
|
SET
|
||||||
history_last_read = :historyLastRead,
|
history_last_read = :historyLastRead,
|
||||||
history_time_read = :historyTimeRead
|
history_time_read = ifnull(history_time_read, 0) + :historyTimeRead
|
||||||
WHERE history_chapter_id = history_chapter_id;
|
WHERE history_chapter_id = history_chapter_id;
|
||||||
|
|
||||||
selectLastInsertedRowId:
|
selectLastInsertedRowId:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue