From 450daf17fd58811ad022a94f2434862ccdc60d5f Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 29 Mar 2020 17:53:30 +0300 Subject: [PATCH] Fix foreign key error --- app/build.gradle | 2 +- .../kotatsu/domain/MangaDataRepository.kt | 7 +++++- .../domain/favourites/FavouritesRepository.kt | 11 +++++--- .../domain/history/HistoryRepository.kt | 25 +++++++++++-------- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 35b1a637c..87dea662d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { minSdkVersion 21 targetSdkVersion 29 versionCode gitCommits - versionName '0.1.2' + versionName '0.1.3' buildConfigField 'String', 'GIT_BRANCH', "\"${gitBranch}\"" diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt index 360aac965..ec5fb2896 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain +import androidx.room.withTransaction import org.koin.core.KoinComponent import org.koin.core.inject import org.koitharu.kotatsu.core.db.MangaDatabase @@ -31,6 +32,10 @@ class MangaDataRepository : KoinComponent { } suspend fun storeManga(manga: Manga) { - db.mangaDao().upsert(MangaEntity.from(manga), manga.tags.map(TagEntity.Companion::fromMangaTag)) + val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) + db.withTransaction { + db.tagsDao().upsert(tags) + db.mangaDao().upsert(MangaEntity.from(manga), tags) + } } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt index b3e520875..30b330d9a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain.favourites +import androidx.room.withTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.KoinComponent @@ -48,10 +49,12 @@ class FavouritesRepository : KoinComponent { suspend fun addToCategory(manga: Manga, categoryId: Long) { val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) - db.tagsDao().upsert(tags) - db.mangaDao().upsert(MangaEntity.from(manga), tags) - val entity = FavouriteEntity(manga.id, categoryId, System.currentTimeMillis()) - db.favouritesDao().add(entity) + db.withTransaction { + db.tagsDao().upsert(tags) + db.mangaDao().upsert(MangaEntity.from(manga), tags) + val entity = FavouriteEntity(manga.id, categoryId, System.currentTimeMillis()) + db.favouritesDao().add(entity) + } notifyFavouritesChanged(manga.id) } diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt index a7f638cf0..0b6d9c31e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain.history +import androidx.room.withTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.KoinComponent @@ -23,18 +24,20 @@ class HistoryRepository : KoinComponent { suspend fun addOrUpdate(manga: Manga, chapterId: Long, page: Int, scroll: Float) { val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) - db.tagsDao().upsert(tags) - db.mangaDao().upsert(MangaEntity.from(manga), tags) - db.historyDao().upsert( - HistoryEntity( - mangaId = manga.id, - createdAt = System.currentTimeMillis(), - updatedAt = System.currentTimeMillis(), - chapterId = chapterId, - page = page, - scroll = scroll + db.withTransaction { + db.tagsDao().upsert(tags) + db.mangaDao().upsert(MangaEntity.from(manga), tags) + db.historyDao().upsert( + HistoryEntity( + mangaId = manga.id, + createdAt = System.currentTimeMillis(), + updatedAt = System.currentTimeMillis(), + chapterId = chapterId, + page = page, + scroll = scroll + ) ) - ) + } notifyHistoryChanged() }