12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package eu.kanade.data.track
- import eu.kanade.data.DatabaseHandler
- import eu.kanade.domain.track.model.Track
- import eu.kanade.domain.track.repository.TrackRepository
- import kotlinx.coroutines.flow.Flow
- class TrackRepositoryImpl(
- private val handler: DatabaseHandler,
- ) : TrackRepository {
- override suspend fun getTracksByMangaId(mangaId: Long): List<Track> {
- return handler.awaitList {
- manga_syncQueries.getTracksByMangaId(mangaId, trackMapper)
- }
- }
- override fun getTracksAsFlow(): Flow<List<Track>> {
- return handler.subscribeToList {
- manga_syncQueries.getTracks(trackMapper)
- }
- }
- override fun getTracksByMangaIdAsFlow(mangaId: Long): Flow<List<Track>> {
- return handler.subscribeToList {
- manga_syncQueries.getTracksByMangaId(mangaId, trackMapper)
- }
- }
- override suspend fun delete(mangaId: Long, syncId: Long) {
- handler.await {
- manga_syncQueries.delete(
- mangaId = mangaId,
- syncId = syncId,
- )
- }
- }
- override suspend fun insert(track: Track) {
- insertValues(track)
- }
- override suspend fun insertAll(tracks: List<Track>) {
- insertValues(*tracks.toTypedArray())
- }
- private suspend fun insertValues(vararg values: Track) {
- handler.await(inTransaction = true) {
- values.forEach { mangaTrack ->
- manga_syncQueries.insert(
- mangaId = mangaTrack.mangaId,
- syncId = mangaTrack.syncId,
- remoteId = mangaTrack.remoteId,
- libraryId = mangaTrack.libraryId,
- title = mangaTrack.title,
- lastChapterRead = mangaTrack.lastChapterRead,
- totalChapters = mangaTrack.totalChapters,
- status = mangaTrack.status,
- score = mangaTrack.score,
- remoteUrl = mangaTrack.remoteUrl,
- startDate = mangaTrack.startDate,
- finishDate = mangaTrack.finishDate,
- )
- }
- }
- }
- }
|