diff --git a/apps/kafka-key-generator/src/main/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetector.kt b/apps/kafka-key-generator/src/main/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetector.kt index ee4e93f7..b146acb1 100644 --- a/apps/kafka-key-generator/src/main/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetector.kt +++ b/apps/kafka-key-generator/src/main/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetector.kt @@ -13,6 +13,13 @@ class MergeDetector( private val kafkaKeys: KafkaKeys ) { private val logger = LoggerFactory.getLogger("MergeDetector") + private val hentEllerNull: (Identitetsnummer) -> ArbeidssoekerId? = { id -> + kafkaKeys.hent(id) + .fold( + { null}, + { it } + ) + } suspend fun findMerges(batchSize: Int): Either { require(batchSize > 0) { "Batch size must be greater than 0" } @@ -47,9 +54,9 @@ class MergeDetector( val storedData = kafkaKeys.hent(currentPos, maxSize) val detected = storedData .suspendingFlatMap { - pdlIdentitesTjeneste.hentIdenter(it.keys.toList()).map { res -> it to res } + pdlIdentitesTjeneste.hentIdenter(it.keys.toList()) } - .map { (local, pdl) -> detectMerges(local, pdl) } + .map { pdl -> detectMerges(hentEllerNull, pdl) } .map(Sequence::count) .map(Int::toLong) .map(results.right::plus) @@ -63,7 +70,7 @@ class MergeDetector( } fun detectMerges( - local: Map, + local: (Identitetsnummer) -> ArbeidssoekerId?, pdl: Map> ): Sequence { return pdl.asSequence() @@ -71,7 +78,7 @@ fun detectMerges( val arbIds = resultIds .map { Identitetsnummer(it.ident) } .mapNotNull { pdlId -> - local[pdlId]?.let { pdlId to it } + local(pdlId)?.let { pdlId to it } } if (arbIds.map { (_, arbId) -> arbId }.distinct().size > 1) { MergeDetected( diff --git a/apps/kafka-key-generator/src/test/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetectorKtTest.kt b/apps/kafka-key-generator/src/test/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetectorKtTest.kt index 5dee0b65..a4217721 100644 --- a/apps/kafka-key-generator/src/test/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetectorKtTest.kt +++ b/apps/kafka-key-generator/src/test/kotlin/no/nav/paw/kafkakeygenerator/merge/MergeDetectorKtTest.kt @@ -16,10 +16,11 @@ import org.junit.jupiter.api.Assertions.* class MergeDetectorKtTest : FreeSpec({ "Når 2 identiteter er samme person i PDL, men har forskjellige arbeidssøkerId skal det slå ut som 'merge detected" { - val local = mapOf( + val localMap = mapOf( Identitetsnummer("1") to ArbeidssoekerId(11), Identitetsnummer("2") to ArbeidssoekerId(12) ) + fun local(id: Identitetsnummer): ArbeidssoekerId? = localMap[id] val pdl = mapOf( "1" to listOf( IdentInformasjon( @@ -35,7 +36,7 @@ class MergeDetectorKtTest : FreeSpec({ ) ) detectMerges( - local = local, + local = ::local, pdl = pdl ) should { merges -> merges.toList().size shouldBe 1 @@ -43,10 +44,11 @@ class MergeDetectorKtTest : FreeSpec({ } "Når 2 identiteter er samme person i PDL, og har arbeidssøkerId skal det ikke slå ut som 'merge detected" { - val local = mapOf( + val localMap = mapOf( Identitetsnummer("1") to ArbeidssoekerId(11), Identitetsnummer("2") to ArbeidssoekerId(11) ) + fun local(id: Identitetsnummer): ArbeidssoekerId? = localMap[id] val pdl = mapOf( "1" to listOf( IdentInformasjon( @@ -62,7 +64,7 @@ class MergeDetectorKtTest : FreeSpec({ ) ) detectMerges( - local = local, + local = ::local, pdl = pdl ).shouldBeEmpty() }