mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +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