mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor(db): Migrate deleteTrack query to SQLDelight
This commit is contained in:
parent
333a7eea68
commit
83cb898068
7 changed files with 22 additions and 12 deletions
|
@ -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()
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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!!)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue