Use SQLDelight in Backup/Restore (#7295)
* Use SQLDelight in Backup/Restore
* Use CoroutineWorker
(cherry picked from commit fd5da2de3a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupCategory.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
# app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt
# app/src/main/sqldelight/data/categories.sq
# app/src/main/sqldelight/data/chapters.sq
This commit is contained in:
@@ -30,4 +30,15 @@ val listOfStringsAndAdapter = object : ColumnAdapter<List<String>, String> {
|
||||
}
|
||||
override fun encode(value: List<String>) = value.joinToString(separator = listOfStringsAndSeparator)
|
||||
}
|
||||
|
||||
private const val listOfLongsSeparator = "/"
|
||||
val listOfLongsAdapter = object : ColumnAdapter<List<Long>, String> {
|
||||
override fun decode(databaseValue: String) =
|
||||
if (databaseValue.isEmpty()) {
|
||||
emptyList()
|
||||
} else {
|
||||
databaseValue.split(listOfLongsSeparator).mapNotNull { it.toLongOrNull() }
|
||||
}
|
||||
override fun encode(value: List<Long>) = value.joinToString(separator = listOfLongsSeparator)
|
||||
}
|
||||
// SY <--
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package eu.kanade.data.exh
|
||||
|
||||
import exh.merged.sql.models.MergedMangaReference
|
||||
|
||||
val mergedMangaReferenceMapper = {
|
||||
id: Long,
|
||||
isInfoManga: Boolean,
|
||||
getChapterUpdates: Boolean,
|
||||
chapterSortMode: Long,
|
||||
chapterPriority: Long,
|
||||
downloadChapters: Boolean,
|
||||
mergeId: Long,
|
||||
mergeUrl: String,
|
||||
mangaId: Long?,
|
||||
mangaUrl: String,
|
||||
mangaSourceId: Long, ->
|
||||
MergedMangaReference(
|
||||
id = id,
|
||||
isInfoManga = isInfoManga,
|
||||
getChapterUpdates = getChapterUpdates,
|
||||
chapterSortMode = chapterSortMode.toInt(),
|
||||
chapterPriority = chapterPriority.toInt(),
|
||||
downloadChapters = downloadChapters,
|
||||
mergeId = mergeId,
|
||||
mergeUrl = mergeUrl,
|
||||
mangaId = mangaId,
|
||||
mangaUrl = mangaUrl,
|
||||
mangaSourceId = mangaSourceId,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package eu.kanade.data.exh
|
||||
|
||||
import exh.metadata.sql.models.SearchMetadata
|
||||
|
||||
val searchMetadataMapper: (Long, String?, String, String?, Int) -> SearchMetadata =
|
||||
{ mangaId, uploader, extra, indexedExtra, extraVersion ->
|
||||
SearchMetadata(
|
||||
mangaId = mangaId,
|
||||
uploader = uploader,
|
||||
extra = extra,
|
||||
indexedExtra = indexedExtra,
|
||||
extraVersion = extraVersion,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package eu.kanade.data.exh
|
||||
|
||||
import exh.metadata.sql.models.SearchTag
|
||||
|
||||
val searchTagMapper: (Long, Long, String?, String, Int) -> SearchTag =
|
||||
{ id, mangaId, namespace, name, type ->
|
||||
SearchTag(
|
||||
id = id,
|
||||
mangaId = mangaId,
|
||||
namespace = namespace,
|
||||
name = name,
|
||||
type = type,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package eu.kanade.data.exh
|
||||
|
||||
import exh.metadata.sql.models.SearchTitle
|
||||
|
||||
val searchTitleMapper: (Long, Long, String, Int) -> SearchTitle =
|
||||
{ id, mangaId, title, type ->
|
||||
SearchTitle(
|
||||
id = id,
|
||||
mangaId = mangaId,
|
||||
title = title,
|
||||
type = type,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user