Insert all recipes in one query

This commit is contained in:
Kirill Kamakin
2022-11-13 13:17:55 +01:00
parent b7e8054d38
commit 946f34cb37
2 changed files with 5 additions and 11 deletions

View File

@@ -23,23 +23,17 @@ class RecipeStorageImpl @Inject constructor(
) : RecipeStorage {
private val recipeDao: RecipeDao by lazy { db.recipeDao() }
override suspend fun saveRecipes(
recipes: List<RecipeSummaryInfo>
) = db.withTransaction {
override suspend fun saveRecipes(recipes: List<RecipeSummaryInfo>) {
logger.v { "saveRecipes() called with $recipes" }
for (recipe in recipes) {
val recipeSummaryEntity = recipe.toRecipeSummaryEntity()
recipeDao.insertRecipe(recipeSummaryEntity)
}
val entities = recipes.map { it.toRecipeSummaryEntity() }
logger.v { "saveRecipes: entities = $entities" }
db.withTransaction { recipeDao.insertRecipes(entities) }
}
override fun queryRecipes(query: String?): PagingSource<Int, RecipeSummaryEntity> {
logger.v { "queryRecipes() called with: query = $query" }
return if (query == null) recipeDao.queryRecipesByPages()
else recipeDao.queryRecipesByPages(query)
}
override suspend fun refreshAll(recipes: List<RecipeSummaryInfo>) {

View File

@@ -13,7 +13,7 @@ interface RecipeDao {
fun queryRecipesByPages(query: String): PagingSource<Int, RecipeSummaryEntity>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertRecipe(recipeSummaryEntity: RecipeSummaryEntity)
suspend fun insertRecipes(recipeSummaryEntity: Iterable<RecipeSummaryEntity>)
@Query("DELETE FROM recipe_summaries")
suspend fun removeAllRecipes()