From 654be40432f5b3ab1e0bc90060fce3f16c0fbf7f Mon Sep 17 00:00:00 2001 From: Wikijito7 Date: Mon, 2 Jan 2023 21:44:30 +0100 Subject: [PATCH] Fixed id duplicated error --- .../datasource/invoice/InvoiceLocalDataSource.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt b/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt index 5d96cce..9455c1a 100644 --- a/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt +++ b/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt @@ -31,7 +31,19 @@ class InvoiceLocalDataSourceImpl(private val invoiceCollection: MongoCollection< }.toList() override suspend fun addInvoices(id: String, invoices: List): Boolean = try { - invoiceCollection.insertMany(invoices.map { it.copy(userId = id) }.toDBO()).wasAcknowledged() + val localInvoices = getInvoicesOfUser(id) + var lastUpdatedId = localInvoices.map { it.idApp }.maxByOrNull { it } ?: 0 + invoices.map { it.copy(userId = id) }.toDBO().map { + invoiceCollection.insertOne( + if (localInvoices.any { localInvoice -> localInvoice.idApp == it.idApp }) { + lastUpdatedId++ + it.copy(idApp = lastUpdatedId) + + } else { + it + } + ).wasAcknowledged() + }.all { it } } catch (e: Throwable) { println(e.stackTraceToString())