Use SQLDelight for more SY specific things
This commit is contained in:
@@ -91,5 +91,9 @@ class AndroidDatabaseHandler(
|
||||
|
||||
// SY -->
|
||||
fun getLibraryQuery() = LibraryQuery(driver)
|
||||
|
||||
fun rawQuery(query: (SqlDriver) -> Unit) {
|
||||
return query(driver)
|
||||
}
|
||||
// SY <--
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package eu.kanade.data.manga
|
||||
|
||||
import eu.kanade.data.DatabaseHandler
|
||||
import eu.kanade.data.exh.favoriteEntryMapper
|
||||
import eu.kanade.domain.manga.repository.FavoritesEntryRepository
|
||||
import exh.favorites.sql.models.FavoriteEntry
|
||||
|
||||
class FavoritesEntryRepositoryImpl(
|
||||
private val handler: DatabaseHandler,
|
||||
) : FavoritesEntryRepository {
|
||||
override suspend fun deleteAll() {
|
||||
handler.await { eh_favoritesQueries.deleteAll() }
|
||||
}
|
||||
|
||||
override suspend fun insertAll(favoriteEntries: List<FavoriteEntry>) {
|
||||
handler.await(true) {
|
||||
favoriteEntries.forEach {
|
||||
eh_favoritesQueries.insertEhFavorites(it.id, it.title, it.gid, it.token, it.category.toLong())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun selectAll(): List<FavoriteEntry> {
|
||||
return handler.awaitList { eh_favoritesQueries.selectAll(favoriteEntryMapper) }
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,14 @@ package eu.kanade.data.manga
|
||||
|
||||
import eu.kanade.data.DatabaseHandler
|
||||
import eu.kanade.data.exh.mergedMangaReferenceMapper
|
||||
import eu.kanade.data.toLong
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.MergeMangaSettingsUpdate
|
||||
import eu.kanade.domain.manga.repository.MangaMergeRepository
|
||||
import eu.kanade.tachiyomi.util.system.logcat
|
||||
import exh.merged.sql.models.MergedMangaReference
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import logcat.LogPriority
|
||||
|
||||
class MangaMergeRepositoryImpl(
|
||||
private val handler: DatabaseHandler,
|
||||
@@ -34,4 +38,38 @@ class MangaMergeRepositoryImpl(
|
||||
override suspend fun subscribeReferencesById(id: Long): Flow<List<MergedMangaReference>> {
|
||||
return handler.subscribeToList { mergedQueries.selectByMergeId(id, mergedMangaReferenceMapper) }
|
||||
}
|
||||
|
||||
override suspend fun updateSettings(update: MergeMangaSettingsUpdate): Boolean {
|
||||
return try {
|
||||
partialUpdate(update)
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun updateAllSettings(values: List<MergeMangaSettingsUpdate>): Boolean {
|
||||
return try {
|
||||
partialUpdate(*values.toTypedArray())
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun partialUpdate(vararg values: MergeMangaSettingsUpdate) {
|
||||
handler.await(inTransaction = true) {
|
||||
values.forEach { value ->
|
||||
mergedQueries.updateSettingsById(
|
||||
id = value.id,
|
||||
getChapterUpdates = value.getChapterUpdates?.toLong(),
|
||||
downloadChapters = value.downloadChapters?.toLong(),
|
||||
infoManga = value.isInfoManga?.toLong(),
|
||||
chapterPriority = value.chapterPriority?.toLong(),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,14 @@ import eu.kanade.data.DatabaseHandler
|
||||
import eu.kanade.data.exh.searchMetadataMapper
|
||||
import eu.kanade.data.exh.searchTagMapper
|
||||
import eu.kanade.data.exh.searchTitleMapper
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.repository.MangaMetadataRepository
|
||||
import exh.metadata.metadata.base.FlatMetadata
|
||||
import exh.metadata.sql.models.SearchMetadata
|
||||
import exh.metadata.sql.models.SearchTag
|
||||
import exh.metadata.sql.models.SearchTitle
|
||||
import exh.source.EH_SOURCE_ID
|
||||
import exh.source.EXH_SOURCE_ID
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
class MangaMetadataRepositoryImpl(
|
||||
@@ -37,4 +41,34 @@ class MangaMetadataRepositoryImpl(
|
||||
override suspend fun subscribeTitlesById(id: Long): Flow<List<SearchTitle>> {
|
||||
return handler.subscribeToList { search_titlesQueries.selectByMangaId(id, searchTitleMapper) }
|
||||
}
|
||||
|
||||
override suspend fun insertFlatMetadata(flatMetadata: FlatMetadata) {
|
||||
require(flatMetadata.metadata.mangaId != -1L)
|
||||
|
||||
handler.await(true) {
|
||||
flatMetadata.metadata.run {
|
||||
search_metadataQueries.upsert(mangaId, uploader, extra, indexedExtra, extraVersion)
|
||||
}
|
||||
search_tagsQueries.deleteByManga(flatMetadata.metadata.mangaId)
|
||||
flatMetadata.tags.forEach {
|
||||
search_tagsQueries.insert(it.mangaId, it.namespace, it.name, it.type)
|
||||
}
|
||||
search_titlesQueries.deleteByManga(flatMetadata.metadata.mangaId)
|
||||
flatMetadata.titles.forEach {
|
||||
search_titlesQueries.insert(it.mangaId, it.title, it.type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getExhFavoriteMangaWithMetadata(): List<Manga> {
|
||||
return handler.awaitList { mangasQueries.getEhMangaWithMetadata(EH_SOURCE_ID, EXH_SOURCE_ID, mangaMapper) }
|
||||
}
|
||||
|
||||
override suspend fun getIdsOfFavoriteMangaWithMetadata(): List<Long> {
|
||||
return handler.awaitList { mangasQueries.getIdsOfFavoriteMangaWithMetadata() }
|
||||
}
|
||||
|
||||
override suspend fun getSearchMetadata(): List<SearchMetadata> {
|
||||
return handler.awaitList { search_metadataQueries.selectAll(searchMetadataMapper) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,4 +114,12 @@ class MangaRepositoryImpl(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getMangaBySource(sourceId: Long): List<Manga> {
|
||||
return handler.awaitList { mangasQueries.getBySource(sourceId, mangaMapper) }
|
||||
}
|
||||
|
||||
override suspend fun getAll(): List<Manga> {
|
||||
return handler.awaitList { mangasQueries.getAll(mangaMapper) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user