Skip to content

Commit 2598845

Browse files
committed
feat: use list upsert to restore room db entities
1 parent e33883f commit 2598845

File tree

3 files changed

+20
-34
lines changed

3 files changed

+20
-34
lines changed

app/src/main/java/to/bitkit/data/dao/TagMetadataDao.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ interface TagMetadataDao {
1616
suspend fun insert(tagMetadata: TagMetadataEntity)
1717

1818
@Upsert
19-
suspend fun upsert(tagMetadata: TagMetadataEntity)
19+
suspend fun upsert(entities: TagMetadataEntity)
20+
21+
@Upsert
22+
suspend fun upsert(tagMetadataList: List<TagMetadataEntity>)
2023

2124
@Query("SELECT * FROM tag_metadata")
2225
fun observeAll(): Flow<List<TagMetadataEntity>>

app/src/main/java/to/bitkit/data/dao/TransferDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ interface TransferDao {
1717
@Upsert
1818
suspend fun upsert(transfer: TransferEntity)
1919

20+
@Upsert
21+
suspend fun upsert(transfers: List<TransferEntity>)
22+
2023
@Update
2124
suspend fun update(transfer: TransferEntity)
2225

app/src/main/java/to/bitkit/repositories/BackupRepo.kt

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -401,51 +401,31 @@ class BackupRepo @Inject constructor(
401401
}
402402
performRestore(BackupCategory.WALLET) { dataBytes ->
403403
val parsed = json.decodeFromString<WalletBackupV1>(String(dataBytes))
404-
405-
parsed.transfers.forEach { transfer ->
406-
db.transferDao().upsert(transfer)
407-
}
408-
404+
db.transferDao().upsert(parsed.transfers)
409405
Logger.debug("Restored ${parsed.transfers.size} transfers", context = TAG)
410406
}
411407
performRestore(BackupCategory.METADATA) { dataBytes ->
412408
val parsed = json.decodeFromString<MetadataBackupV1>(String(dataBytes))
413-
414-
parsed.tagMetadata.forEach { entity ->
415-
db.tagMetadataDao().upsert(entity)
416-
}
417-
409+
db.tagMetadataDao().upsert(parsed.tagMetadata)
418410
cacheStore.update { parsed.cache }
419-
420411
Logger.debug("Restored caches and ${parsed.tagMetadata.size} tags metadata records", context = TAG)
421412
}
422413
performRestore(BackupCategory.BLOCKTANK) { dataBytes ->
423414
val parsed = json.decodeFromString<BlocktankBackupV1>(String(dataBytes))
424-
425-
blocktankRepo.restoreFromBackup(parsed)
426-
.onSuccess {
427-
Logger.debug(
428-
"Restored LSP info, ${parsed.orders.size} orders, ${parsed.cjitEntries.size} CJIT entries",
429-
context = TAG,
430-
)
431-
}.onFailure { e ->
432-
Logger.warn("Failed to restore LSP info, orders and CJIT entries", e, context = TAG)
433-
}
434-
415+
blocktankRepo.restoreFromBackup(parsed).onSuccess {
416+
Logger.debug(
417+
"Restored ${parsed.orders.size} orders, ${parsed.cjitEntries.size} CJITs", context = TAG,
418+
)
419+
}
435420
}
436421
performRestore(BackupCategory.ACTIVITY) { dataBytes ->
437422
val parsed = json.decodeFromString<ActivityBackupV1>(String(dataBytes))
438-
439-
activityRepo.restoreFromBackup(parsed)
440-
.onSuccess {
441-
Logger.debug(
442-
"Restored ${parsed.activities.size} activities and " +
443-
"${parsed.closedChannels.size} closed channels",
444-
context = TAG,
445-
)
446-
}.onFailure { e ->
447-
Logger.warn("Failed to restore activities and closed channels", e, context = TAG)
448-
}
423+
activityRepo.restoreFromBackup(parsed).onSuccess {
424+
Logger.debug(
425+
"Restored ${parsed.activities.size} activities, ${parsed.closedChannels.size} closed channels",
426+
context = TAG,
427+
)
428+
}
449429
}
450430

451431
Logger.info("Full restore success", context = TAG)

0 commit comments

Comments
 (0)