refactor(db): Migrate deleteTrack query to SQLDelight

This commit is contained in:
Ahmad Ansori Palembani 2024-11-29 14:44:13 +07:00
parent 333a7eea68
commit 83cb898068
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
7 changed files with 22 additions and 12 deletions

View file

@ -1,11 +1,9 @@
package eu.kanade.tachiyomi.data.database.queries package eu.kanade.tachiyomi.data.database.queries
import com.pushtorefresh.storio.sqlite.queries.DeleteQuery
import com.pushtorefresh.storio.sqlite.queries.Query import com.pushtorefresh.storio.sqlite.queries.Query
import eu.kanade.tachiyomi.data.database.DbProvider import eu.kanade.tachiyomi.data.database.DbProvider
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.database.tables.TrackTable import eu.kanade.tachiyomi.data.database.tables.TrackTable
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.domain.manga.models.Manga import eu.kanade.tachiyomi.domain.manga.models.Manga
interface TrackQueries : DbProvider { interface TrackQueries : DbProvider {
@ -26,13 +24,4 @@ interface TrackQueries : DbProvider {
fun insertTracks(tracks: List<Track>) = db.put().objects(tracks).prepare() fun insertTracks(tracks: List<Track>) = db.put().objects(tracks).prepare()
fun deleteTrackForManga(manga: Manga, sync: TrackService) = db.delete()
.byQuery(
DeleteQuery.builder()
.table(TrackTable.TABLE)
.where("${TrackTable.COL_MANGA_ID} = ? AND ${TrackTable.COL_SYNC_ID} = ?")
.whereArgs(manga.id, sync.id)
.build(),
)
.prepare()
} }

View file

@ -94,6 +94,7 @@ import yokai.domain.manga.interactor.UpdateManga
import yokai.domain.manga.models.MangaUpdate import yokai.domain.manga.models.MangaUpdate
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.domain.storage.StorageManager import yokai.domain.storage.StorageManager
import yokai.domain.track.interactor.DeleteTrack
import yokai.domain.track.interactor.GetTrack import yokai.domain.track.interactor.GetTrack
import yokai.i18n.MR import yokai.i18n.MR
import yokai.util.lang.getString import yokai.util.lang.getString
@ -114,6 +115,7 @@ class MangaDetailsPresenter(
private val getManga: GetManga by injectLazy() private val getManga: GetManga by injectLazy()
private val updateChapter: UpdateChapter by injectLazy() private val updateChapter: UpdateChapter by injectLazy()
private val updateManga: UpdateManga by injectLazy() private val updateManga: UpdateManga by injectLazy()
private val deleteTrack: DeleteTrack by injectLazy()
private val getTrack: GetTrack by injectLazy() private val getTrack: GetTrack by injectLazy()
private val networkPreferences: NetworkPreferences by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy()
@ -1070,7 +1072,7 @@ class MangaDetailsPresenter(
fun removeTracker(trackItem: TrackItem, removeFromService: Boolean) { fun removeTracker(trackItem: TrackItem, removeFromService: Boolean) {
presenterScope.launch { presenterScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
db.deleteTrackForManga(manga, trackItem.service).executeAsBlocking() deleteTrack.awaitForManga(manga.id!!, trackItem.service.id)
if (removeFromService && trackItem.service.canRemoveFromService()) { if (removeFromService && trackItem.service.canRemoveFromService()) {
trackItem.service.removeFromService(trackItem.track!!) trackItem.service.removeFromService(trackItem.track!!)
} }

View file

@ -42,6 +42,7 @@ import yokai.domain.manga.interactor.InsertManga
import yokai.domain.manga.interactor.UpdateManga import yokai.domain.manga.interactor.UpdateManga
import yokai.domain.recents.interactor.GetRecents import yokai.domain.recents.interactor.GetRecents
import yokai.domain.track.TrackRepository import yokai.domain.track.TrackRepository
import yokai.domain.track.interactor.DeleteTrack
import yokai.domain.track.interactor.GetTrack import yokai.domain.track.interactor.GetTrack
fun domainModule() = module { fun domainModule() = module {
@ -87,5 +88,6 @@ fun domainModule() = module {
factory { GetRecents(get(), get()) } factory { GetRecents(get(), get()) }
single<TrackRepository> { TrackRepositoryImpl(get()) } single<TrackRepository> { TrackRepositoryImpl(get()) }
factory { DeleteTrack(get()) }
factory { GetTrack(get()) } factory { GetTrack(get()) }
} }

View file

@ -7,4 +7,7 @@ import yokai.domain.track.TrackRepository
class TrackRepositoryImpl(private val handler: DatabaseHandler) : TrackRepository { class TrackRepositoryImpl(private val handler: DatabaseHandler) : TrackRepository {
override suspend fun getAllByMangaId(mangaId: Long): List<Track> = override suspend fun getAllByMangaId(mangaId: Long): List<Track> =
handler.awaitList { manga_syncQueries.getAllByMangaId(mangaId, Track::mapper) } handler.awaitList { manga_syncQueries.getAllByMangaId(mangaId, Track::mapper) }
override suspend fun deleteForManga(mangaId: Long, syncId: Long) =
handler.await { manga_syncQueries.deleteForManga(mangaId, syncId) }
} }

View file

@ -4,4 +4,5 @@ import eu.kanade.tachiyomi.data.database.models.Track
interface TrackRepository { interface TrackRepository {
suspend fun getAllByMangaId(mangaId: Long): List<Track> suspend fun getAllByMangaId(mangaId: Long): List<Track>
suspend fun deleteForManga(mangaId: Long, syncId: Long)
} }

View file

@ -0,0 +1,9 @@
package yokai.domain.track.interactor
import yokai.domain.track.TrackRepository
class DeleteTrack(
private val trackRepository: TrackRepository,
) {
suspend fun awaitForManga(mangaId: Long, syncId: Long) = trackRepository.deleteForManga(mangaId, syncId)
}

View file

@ -23,3 +23,7 @@ getAllByMangaId:
SELECT * SELECT *
FROM manga_sync FROM manga_sync
WHERE manga_id = :mangaId; WHERE manga_id = :mangaId;
deleteForManga:
DELETE FROM manga_sync
WHERE manga_id = :mangaId AND sync_id = :syncId;