mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Use SQLDelight for all MangaCategory related queries (#7441)
This commit is contained in:
		@@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.data.database.mappers.MangaTypeMapping
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.MangaCategory
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.queries.MangaCategoryQueries
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.queries.MangaQueries
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -17,7 +16,7 @@ import eu.kanade.tachiyomi.data.database.queries.MangaQueries
 | 
			
		||||
class DatabaseHelper(
 | 
			
		||||
    openHelper: SupportSQLiteOpenHelper,
 | 
			
		||||
) :
 | 
			
		||||
    MangaQueries, MangaCategoryQueries {
 | 
			
		||||
    MangaQueries {
 | 
			
		||||
 | 
			
		||||
    override val db = DefaultStorIOSQLite.builder()
 | 
			
		||||
        .sqliteOpenHelper(openHelper)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.database.queries
 | 
			
		||||
 | 
			
		||||
import com.pushtorefresh.storio.Queries
 | 
			
		||||
import com.pushtorefresh.storio.sqlite.queries.DeleteQuery
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.DbProvider
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.inTransaction
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.MangaCategory
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable
 | 
			
		||||
 | 
			
		||||
interface MangaCategoryQueries : DbProvider {
 | 
			
		||||
 | 
			
		||||
    fun insertMangasCategories(mangasCategories: List<MangaCategory>) = db.put().objects(mangasCategories).prepare()
 | 
			
		||||
 | 
			
		||||
    fun deleteOldMangasCategories(mangas: List<Manga>) = db.delete()
 | 
			
		||||
        .byQuery(
 | 
			
		||||
            DeleteQuery.builder()
 | 
			
		||||
                .table(MangaCategoryTable.TABLE)
 | 
			
		||||
                .where("${MangaCategoryTable.COL_MANGA_ID} IN (${Queries.placeholders(mangas.size)})")
 | 
			
		||||
                .whereArgs(*mangas.map { it.id }.toTypedArray())
 | 
			
		||||
                .build(),
 | 
			
		||||
        )
 | 
			
		||||
        .prepare()
 | 
			
		||||
 | 
			
		||||
    fun setMangaCategories(mangasCategories: List<MangaCategory>, mangas: List<Manga>) {
 | 
			
		||||
        db.inTransaction {
 | 
			
		||||
            deleteOldMangasCategories(mangas).executeAsBlocking()
 | 
			
		||||
            insertMangasCategories(mangasCategories).executeAsBlocking()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.source.browse
 | 
			
		||||
import android.os.Bundle
 | 
			
		||||
import eu.davidea.flexibleadapter.items.IFlexible
 | 
			
		||||
import eu.kanade.domain.category.interactor.GetCategories
 | 
			
		||||
import eu.kanade.domain.category.model.toDbCategory
 | 
			
		||||
import eu.kanade.domain.category.interactor.SetMangaCategories
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
 | 
			
		||||
import eu.kanade.domain.manga.interactor.GetDuplicateLibraryManga
 | 
			
		||||
@@ -13,7 +13,6 @@ import eu.kanade.domain.track.model.toDomainTrack
 | 
			
		||||
import eu.kanade.tachiyomi.data.cache.CoverCache
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.MangaCategory
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toMangaInfo
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
@@ -74,6 +73,7 @@ open class BrowseSourcePresenter(
 | 
			
		||||
    private val getDuplicateLibraryManga: GetDuplicateLibraryManga = Injekt.get(),
 | 
			
		||||
    private val getCategories: GetCategories = Injekt.get(),
 | 
			
		||||
    private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(),
 | 
			
		||||
    private val setMangaCategories: SetMangaCategories = Injekt.get(),
 | 
			
		||||
    private val insertTrack: InsertTrack = Injekt.get(),
 | 
			
		||||
    private val syncChaptersWithTrackServiceTwoWay: SyncChaptersWithTrackServiceTwoWay = Injekt.get(),
 | 
			
		||||
) : BasePresenter<BrowseSourceController>() {
 | 
			
		||||
@@ -388,8 +388,12 @@ open class BrowseSourcePresenter(
 | 
			
		||||
     * @param manga the manga to move.
 | 
			
		||||
     */
 | 
			
		||||
    private fun moveMangaToCategories(manga: Manga, categories: List<DomainCategory>) {
 | 
			
		||||
        val mc = categories.filter { it.id != 0L }.map { MangaCategory.create(manga, it.toDbCategory()) }
 | 
			
		||||
        db.setMangaCategories(mc, listOf(manga))
 | 
			
		||||
        presenterScope.launchIO {
 | 
			
		||||
            setMangaCategories.await(
 | 
			
		||||
                mangaId = manga.id!!,
 | 
			
		||||
                categoryIds = categories.filter { it.id != 0L }.map { it.id },
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user