From 672b4a1470ca557c11f698774c7c1bfbecec48ce Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 1 Jan 2026 17:29:58 +0900 Subject: [PATCH] Update an insert logic of TopicFts. Change-Id: Id8fd51a4542e8cb22645d36ec507af4d7f02489d --- .../DefaultSearchContentsRepository.kt | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/DefaultSearchContentsRepository.kt b/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/DefaultSearchContentsRepository.kt index 3bacb8a14..9ef262a89 100644 --- a/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/DefaultSearchContentsRepository.kt +++ b/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/DefaultSearchContentsRepository.kt @@ -54,7 +54,30 @@ internal class DefaultSearchContentsRepository @Inject constructor( .first() .map(PopulatedNewsResource::asFtsEntity), ) - topicFtsDao.insertAll(topicDao.getOneOffTopicEntities().map { it.asFtsEntity() }) + + + topicDao.getOneOffTopicEntities().forEach { topicEntity -> + val topicFtsEntities = topicFtsDao.getFtsEntityById(topicEntity.id) + + val size = topicFtsEntities.size + if (size == 0) { + topicFtsDao.insert(topicEntity.asFtsEntity()) + return@forEach + } + + if (size > 1) { + topicFtsDao.deleteById(topicEntity.id) + topicFtsDao.insert(topicEntity.asFtsEntity()) + return@forEach + } + + topicFtsDao.update( + name = topicEntity.name, + shortDescription = topicEntity.shortDescription, + longDescription = topicEntity.longDescription, + topicId = topicEntity.id, + ) + } } }