Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ class GetExcludedScanlators(
) {

suspend fun await(mangaId: Long): Set<String> {
return database.excluded_scanlatorsQueries
return database.excluded_scanlatorQueries
.getExcludedScanlatorsByMangaId(mangaId)
.awaitAsList()
.toSet()
}

fun subscribe(mangaId: Long): Flow<Set<String>> {
return database.excluded_scanlatorsQueries
return database.excluded_scanlatorQueries
.getExcludedScanlatorsByMangaId(mangaId)
.subscribeToList()
.map { it.toSet() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ class SetExcludedScanlators(

suspend fun await(mangaId: Long, excludedScanlators: Set<String>) {
database.transaction {
val currentExcluded = database.excluded_scanlatorsQueries
val currentExcluded = database.excluded_scanlatorQueries
.getExcludedScanlatorsByMangaId(mangaId)
.awaitAsList()
.toSet()
val toAdd = excludedScanlators.minus(currentExcluded)
for (scanlator in toAdd) {
database.excluded_scanlatorsQueries.insert(mangaId, scanlator)
database.excluded_scanlatorQueries.insert(mangaId, scanlator)
}
val toRemove = currentExcluded.minus(excludedScanlators)
database.excluded_scanlatorsQueries.remove(mangaId, toRemove)
database.excluded_scanlatorQueries.remove(mangaId, toRemove)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ class ClearDatabaseViewModel(

suspend fun removeMangaBySourceId(keepReadManga: Boolean) = withNonCancellableContext {
val state = state.value as? State.Ready ?: return@withNonCancellableContext
database.mangasQueries.deleteNonLibraryManga(state.selection, keepReadManga.toLong())
database.mangaQueries.deleteNonLibraryManga(state.selection, keepReadManga.toLong())
database.historyQueries.removeResettedHistory()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ class MangaBackupCreator(
// Entry for this manga
val mangaObject = manga.toBackupManga()

mangaObject.excludedScanlators = database.excluded_scanlatorsQueries
mangaObject.excludedScanlators = database.excluded_scanlatorQueries
.getExcludedScanlatorsByMangaId(manga.id)
.awaitAsList()

if (options.chapters) {
// Backup all the chapters
database.chaptersQueries
database.chapterQueries
.getChaptersByMangaId(
mangaId = manga.id,
applyScanlatorFilter = 0, // false
Expand All @@ -59,7 +59,7 @@ class MangaBackupCreator(
}

if (options.tracking) {
val tracks = database.manga_syncQueries
val tracks = database.manga_trackQueries
.getTracksByMangaId(manga.id, backupTrackMapper)
.awaitAsList()
if (tracks.isNotEmpty()) {
Expand All @@ -71,10 +71,10 @@ class MangaBackupCreator(
val historyByMangaId = getHistory.await(manga.id)
if (historyByMangaId.isNotEmpty()) {
val history = historyByMangaId.map { history ->
val chapter = database.chaptersQueries
val chapter = database.chapterQueries
.getChapterById(history.chapterId)
.awaitAsOne()
BackupHistory(chapter.url, history.readAt?.time ?: 0L, history.readDuration)
BackupHistory(chapter.remote_url, history.readAt?.time ?: 0L, history.readDuration)
}
if (history.isNotEmpty()) {
mangaObject.history = history
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,15 @@ val backupChapterMapper = {
url: String,
name: String,
scanlator: String?,
chapterNumber: Double,
dateUpload: Long,
sourceOrder: Long,
memo: JsonObject,
read: Boolean,
bookmark: Boolean,
lastPageRead: Long,
chapterNumber: Double,
sourceOrder: Long,
dateFetch: Long,
dateUpload: Long,
lastModifiedAt: Long,
version: Long,
_: Long,
memo: JsonObject,
modifiedAt: Long,
->
BackupChapter(
url = url,
Expand All @@ -75,8 +73,8 @@ val backupChapterMapper = {
dateFetch = dateFetch,
dateUpload = dateUpload,
sourceOrder = sourceOrder,
lastModifiedAt = lastModifiedAt,
version = version,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

version is gone?

lastModifiedAt = modifiedAt,
version = 0,
memo = MemoColumnAdapter.encode(memo),
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ val backupTrackMapper = {
_: Long,
syncId: Long,
mediaId: Long,
remoteUrl: String,
libraryId: Long?,
title: String,
lastChapterRead: Double,
totalChapters: Long,
status: Long,
score: Double,
remoteUrl: String,
startDate: Long,
finishDate: Long,
private: Boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class CategoriesRestorer(
val dbCategory = dbCategoriesByName[it.name]
if (dbCategory != null) return@map dbCategory
val order = nextOrder++
database.categoriesQueries
database.categoryQueries
.insert(it.name, order, it.flags)
.let { id -> it.toCategory(id).copy(order = order) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ class MangaRestorer(
private val currentFetchWindow = fetchInterval.getWindow(now.date, timeZone)

suspend fun sortByNew(backupMangas: List<BackupManga>): List<BackupManga> {
val urlsBySource = database.mangasQueries
val urlsBySource = database.mangaQueries
.getAllMangaSourceAndUrl()
.awaitAsList()
.groupBy({ it.source }, { it.url })
.groupBy({ it.source_id }, { it.remote_url })

return backupMangas
.sortedWith(
Expand Down Expand Up @@ -109,7 +109,7 @@ class MangaRestorer(
}

private suspend fun updateManga(manga: Manga): Manga {
database.mangasQueries.update(
database.mangaQueries.update(
source = manga.source,
url = manga.url,
artist = manga.artist,
Expand All @@ -119,19 +119,16 @@ class MangaRestorer(
title = manga.title,
status = manga.status,
thumbnailUrl = manga.thumbnailUrl,
favorite = manga.favorite,
favoriteAt = manga.dateAdded.takeIf { manga.favorite },
lastUpdate = manga.lastUpdate,
nextUpdate = null,
calculateInterval = null,
initialized = manga.initialized,
viewer = manga.viewerFlags,
chapterFlags = manga.chapterFlags,
coverLastModified = manga.coverLastModified,
dateAdded = manga.dateAdded,
mangaId = manga.id,
updateStrategy = manga.updateStrategy.let(UpdateStrategyColumnAdapter::encode),
version = manga.version,
isSyncing = 1,
notes = manga.notes,
memo = manga.memo.let(MemoColumnAdapter::encode),
)
Expand Down Expand Up @@ -194,7 +191,7 @@ class MangaRestorer(
private suspend fun insertNewChapters(chapters: List<Chapter>) {
database.transaction {
chapters.forEach { chapter ->
database.chaptersQueries.insert(
database.chapterQueries.insert(
chapter.mangaId,
chapter.url,
chapter.name,
Expand All @@ -206,7 +203,6 @@ class MangaRestorer(
chapter.sourceOrder,
chapter.dateFetch,
chapter.dateUpload,
chapter.version,
chapter.memo,
)
}
Expand All @@ -216,7 +212,7 @@ class MangaRestorer(
private suspend fun updateExistingChapters(chapters: List<Chapter>) {
database.transaction {
chapters.forEach { chapter ->
database.chaptersQueries.update(
database.chapterQueries.update(
mangaId = null,
url = null,
name = null,
Expand All @@ -229,8 +225,6 @@ class MangaRestorer(
dateFetch = null,
dateUpload = null,
chapterId = chapter.id,
version = chapter.version,
isSyncing = 0,
memo = chapter.memo.let(MemoColumnAdapter::encode),
)
}
Expand All @@ -243,7 +237,7 @@ class MangaRestorer(
* @return id of [Manga], null if not found
*/
private suspend fun insertManga(manga: Manga): Long {
return database.mangasQueries.insertReturningId(
return database.mangaQueries.insertReturningId(
source = manga.source,
url = manga.url,
artist = manga.artist,
Expand All @@ -253,17 +247,15 @@ class MangaRestorer(
title = manga.title,
status = manga.status,
thumbnailUrl = manga.thumbnailUrl,
favorite = manga.favorite,
favoriteAt = manga.dateAdded.takeIf { manga.favorite },
lastUpdate = manga.lastUpdate,
nextUpdate = 0L,
calculateInterval = 0L,
initialized = manga.initialized,
viewerFlags = manga.viewerFlags,
chapterFlags = manga.chapterFlags,
coverLastModified = manga.coverLastModified,
dateAdded = manga.dateAdded,
updateStrategy = manga.updateStrategy,
version = manga.version,
notes = manga.notes,
memo = manga.memo,
)
Expand Down Expand Up @@ -314,9 +306,9 @@ class MangaRestorer(

if (mangaCategoriesToUpdate.isNotEmpty()) {
database.transaction {
database.mangas_categoriesQueries.deleteMangaCategoryByMangaId(manga.id)
database.manga_categoryQueries.deleteMangaCategoryByMangaId(manga.id)
mangaCategoriesToUpdate.forEach { (mangaId, categoryId) ->
database.mangas_categoriesQueries.insert(mangaId, categoryId)
database.manga_categoryQueries.insert(mangaId, categoryId)
}
}
}
Expand All @@ -330,26 +322,26 @@ class MangaRestorer(
val item = history.getHistoryImpl()

if (dbHistory == null) {
val chapter = database.chaptersQueries
val chapter = database.chapterQueries
.getChapterByUrlAndMangaId(history.url, manga.id)
.awaitAsOneOrNull()
return@mapNotNull if (chapter == null) {
// Chapter doesn't exist; skip
null
} else {
// New history entry
item.copy(chapterId = chapter._id)
item.copy(chapterId = chapter.id)
}
}

// Update history entry
item.copy(
id = dbHistory._id,
id = dbHistory.id,
chapterId = dbHistory.chapter_id,
readAt = max(item.readAt?.time ?: 0L, dbHistory.last_read?.time ?: 0L)
readAt = max(item.readAt?.time ?: 0L, dbHistory.read_at?.time ?: 0L)
.takeIf { it > 0L }
?.let { Date(it) },
readDuration = max(item.readDuration, dbHistory.time_read) - dbHistory.time_read,
readDuration = max(item.readDuration, dbHistory.read_duration) - dbHistory.read_duration,
)
}

Expand Down Expand Up @@ -399,7 +391,7 @@ class MangaRestorer(
if (existingTracks.isEmpty()) return
database.transaction {
existingTracks.forEach { track ->
database.manga_syncQueries.update(
database.manga_trackQueries.update(
track.mangaId,
track.trackerId,
track.remoteId,
Expand Down Expand Up @@ -429,11 +421,11 @@ class MangaRestorer(
*/
private suspend fun restoreExcludedScanlators(manga: Manga, excludedScanlators: List<String>) {
if (excludedScanlators.isEmpty()) return
val existingExcludedScanlators = database.excluded_scanlatorsQueries
val existingExcludedScanlators = database.excluded_scanlatorQueries
.getExcludedScanlatorsByMangaId(manga.id)
.awaitAsList()
val toInsert = excludedScanlators.filter { it !in existingExcludedScanlators }
if (toInsert.isEmpty()) return
toInsert.forEach { database.excluded_scanlatorsQueries.insert(manga.id, it) }
toInsert.forEach { database.excluded_scanlatorQueries.insert(manga.id, it) }
}
}
18 changes: 9 additions & 9 deletions app/src/main/java/mihon/app/di/AppBindings.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ import kotlinx.serialization.protobuf.ProtoBuf
import nl.adaptivity.xmlutil.XmlDeclMode
import nl.adaptivity.xmlutil.core.XmlVersion
import nl.adaptivity.xmlutil.serialization.XML
import tachiyomi.data.Chapters
import tachiyomi.data.Chapter
import tachiyomi.data.Database
import tachiyomi.data.DateColumnAdapter
import tachiyomi.data.History
import tachiyomi.data.Mangas
import tachiyomi.data.Manga
import tachiyomi.data.MemoColumnAdapter
import tachiyomi.data.StringListColumnAdapter
import tachiyomi.data.UpdateStrategyColumnAdapter
Expand All @@ -47,15 +47,15 @@ object AppBindings {
return Database(
driver = driver,
historyAdapter = History.Adapter(
last_readAdapter = DateColumnAdapter,
read_atAdapter = DateColumnAdapter,
),
mangasAdapter = Mangas.Adapter(
genreAdapter = StringListColumnAdapter,
update_strategyAdapter = UpdateStrategyColumnAdapter,
memoAdapter = MemoColumnAdapter,
mangaAdapter = Manga.Adapter(
remote_genreAdapter = StringListColumnAdapter,
remote_update_strategyAdapter = UpdateStrategyColumnAdapter,
remote_memoAdapter = MemoColumnAdapter,
),
chaptersAdapter = Chapters.Adapter(
memoAdapter = MemoColumnAdapter,
chapterAdapter = Chapter.Adapter(
remote_memoAdapter = MemoColumnAdapter,
),
)
}
Expand Down
Loading