diff --git a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepository.kt b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepository.kt index 00ae9ed7b..eabcd35e5 100644 --- a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepository.kt +++ b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepository.kt @@ -25,15 +25,6 @@ class InntektsmeldingRepository( private val logger = logger() private val sikkerLogger = sikkerLogger() - fun hentNyesteInntektsmelding(forespoerselId: UUID): Inntektsmelding? = - Metrics.dbInntektsmelding.recordTime(InntektsmeldingRepository::hentNyesteInntektsmelding) { - transaction(db) { - hentNyesteImQuery(forespoerselId) - .firstOrNull() - ?.getOrNull(InntektsmeldingEntitet.dokument) - } - } - fun hentNyesteEksternEllerInternInntektsmelding(forespoerselId: UUID): Pair = Metrics.dbInntektsmelding.recordTime(InntektsmeldingRepository::hentNyesteEksternEllerInternInntektsmelding) { transaction(db) { @@ -162,7 +153,7 @@ class InntektsmeldingRepository( private fun hentNyesteImSkjemaQuery(forespoerselId: UUID): Query = InntektsmeldingEntitet .selectAll() - .where { (InntektsmeldingEntitet.forespoerselId eq forespoerselId.toString()) and InntektsmeldingEntitet.skjema.isNotNull() } + .where { InntektsmeldingEntitet.forespoerselId eq forespoerselId.toString() } .orderBy(InntektsmeldingEntitet.innsendt, SortOrder.DESC) .limit(1) } diff --git a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingUtils.kt b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingUtils.kt index 0e5f1cbb7..beb279533 100644 --- a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingUtils.kt +++ b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingUtils.kt @@ -1,19 +1,8 @@ package no.nav.helsearbeidsgiver.inntektsmelding.db -import no.nav.helsearbeidsgiver.domene.inntektsmelding.deprecated.Inntektsmelding import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.skjema.SkjemaInntektsmelding import no.nav.helsearbeidsgiver.felles.domene.Forespoersel -fun Inntektsmelding.erDuplikatAv(other: Inntektsmelding): Boolean = - this == - other.copy( - vedtaksperiodeId = vedtaksperiodeId, - tidspunkt = tidspunkt, - årsakInnsending = årsakInnsending, - innsenderNavn = innsenderNavn, - telefonnummer = telefonnummer, - ) - // Så lenge frontend sender felter som ikke kreves av Spleis så må vi filtrere ut disse for å sammenligne skjema fun SkjemaInntektsmelding.erDuplikatAv( other: SkjemaInntektsmelding, diff --git a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt index 65f6572dc..9c5ceda95 100644 --- a/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt +++ b/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt @@ -15,7 +15,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository -import no.nav.helsearbeidsgiver.inntektsmelding.db.erDuplikatAv import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson @@ -60,17 +59,8 @@ class LagreImRiver( override fun LagreImMelding.haandter(json: Map): Map { val inntektsmeldingGammeltFormat = inntektsmelding.convert().copy(bestemmendeFraværsdag = bestemmendeFravaersdag) - val nyesteIm = imRepo.hentNyesteInntektsmelding(inntektsmelding.type.id) - - // TODO: Fjernes etter at vi har gått i prod med den nye innsending-flyten - val erDuplikat = nyesteIm?.erDuplikatAv(inntektsmeldingGammeltFormat) ?: false - - if (erDuplikat) { - sikkerLogger.warn("Fant duplikat av inntektsmelding.") - } else { - imRepo.oppdaterMedBeriketDokument(inntektsmelding.type.id, innsendingId, inntektsmeldingGammeltFormat) - sikkerLogger.info("Lagret inntektsmelding.") - } + imRepo.oppdaterMedBeriketDokument(inntektsmelding.type.id, innsendingId, inntektsmeldingGammeltFormat) + sikkerLogger.info("Lagret inntektsmelding.") return mapOf( Key.EVENT_NAME to eventName.toJson(), @@ -79,7 +69,9 @@ class LagreImRiver( data .plus( mapOf( - Key.ER_DUPLIKAT_IM to erDuplikat.toJson(Boolean.serializer()), + // Duplikatsjekk er flyttet til 'LagreImSkjemaRiver'. Beholder dette svaret for å unngå å endre for mye på meldingsfylten. + // På sikt så bør vi vurdere om vi trenger å lagre inntektsmelding i databasen i det hele tatt. + Key.ER_DUPLIKAT_IM to false.toJson(Boolean.serializer()), ), ).toJson(), ) diff --git a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepositoryTest.kt b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepositoryTest.kt index a11675d17..d1bc9e1a7 100644 --- a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepositoryTest.kt +++ b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/InntektsmeldingRepositoryTest.kt @@ -68,7 +68,9 @@ class InntektsmeldingRepositoryTest : inntektsmeldinger.first().getOrNull(InntektsmeldingEntitet.dokument) shouldBe beriketDokument } - inntektsmeldingRepo.hentNyesteInntektsmelding(skjema.forespoerselId) shouldBe beriketDokument + val record = testRepo.hentRecordFraInntektsmelding(skjema.forespoerselId).shouldNotBeNull() + + record.getOrNull(InntektsmeldingEntitet.dokument) shouldBe beriketDokument inntektsmeldingRepo.hentNyesteBerikedeInnsendingId(skjema.forespoerselId) shouldBe innsendingId } diff --git a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt index 49789cc32..9f8585d46 100644 --- a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt +++ b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiverTest.kt @@ -15,9 +15,7 @@ import io.mockk.verifySequence import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.domene.inntektsmelding.Utils.convert -import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.AarsakInnsending import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding -import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -30,7 +28,6 @@ import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.test.date.august import no.nav.helsearbeidsgiver.utils.test.date.oktober import java.util.UUID @@ -48,66 +45,11 @@ class LagreImRiverTest : clearAllMocks() } - context("inntektsmelding lagres") { - withData( - mapOf( - "hvis ingen andre inntektsmeldinger er mottatt" to null, - "hvis ikke duplikat av tidligere inntektsmeldinger" to - mockInntektsmeldingV1().copy( - sykmeldingsperioder = listOf(9.august til 29.august), - ), - ), - ) { eksisterendeInntektsmelding -> - every { mockImRepo.hentNyesteInntektsmelding(any()) } returns eksisterendeInntektsmelding?.convert() - every { mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } just Runs - - val nyInntektsmelding = mockInntektsmeldingV1() - - val innkommendeMelding = innkommendeMelding(innsendingId, nyInntektsmelding) - - testRapid.sendJson(innkommendeMelding.toMap()) - - testRapid.inspektør.size shouldBeExactly 1 - - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to innkommendeMelding.eventName.toJson(), - Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()), - Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), - Key.ER_DUPLIKAT_IM to false.toJson(Boolean.serializer()), - Key.INNSENDING_ID to innsendingId.toJson(Long.serializer()), - ).toJson(), - ) - - verifySequence { - mockImRepo.hentNyesteInntektsmelding(innkommendeMelding.inntektsmelding.type.id) - mockImRepo.oppdaterMedBeriketDokument(innkommendeMelding.inntektsmelding.type.id, innsendingId, nyInntektsmelding.convert()) - } - } - } + test("inntektsmelding lagres") { + every { mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } just Runs - test("duplikat lagres ikke, men svarer OK") { val nyInntektsmelding = mockInntektsmeldingV1() - val duplikatIm = - nyInntektsmelding.let { - it.copy( - vedtaksperiodeId = UUID.randomUUID(), - avsender = - it.avsender.copy( - navn = "Krokete Krølltang", - ), - aarsakInnsending = AarsakInnsending.Ny, - mottatt = nyInntektsmelding.mottatt.minusDays(14), - ) - } - - every { mockImRepo.hentNyesteInntektsmelding(any()) } returns duplikatIm.convert() - every { mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } just Runs - val innkommendeMelding = innkommendeMelding(innsendingId, nyInntektsmelding) testRapid.sendJson(innkommendeMelding.toMap()) @@ -122,22 +64,19 @@ class LagreImRiverTest : mapOf( Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()), Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag.toJson(), - Key.ER_DUPLIKAT_IM to true.toJson(Boolean.serializer()), + Key.ER_DUPLIKAT_IM to false.toJson(Boolean.serializer()), Key.INNSENDING_ID to innsendingId.toJson(Long.serializer()), ).toJson(), ) verifySequence { - mockImRepo.hentNyesteInntektsmelding(innkommendeMelding.inntektsmelding.type.id) - } - verify(exactly = 0) { - mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) + mockImRepo.oppdaterMedBeriketDokument(innkommendeMelding.inntektsmelding.type.id, innsendingId, nyInntektsmelding.convert()) } } test("håndterer at repo feiler") { every { - mockImRepo.hentNyesteInntektsmelding(any()) + mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } throws RuntimeException("thank you, next") val innkommendeMelding = innkommendeMelding(innsendingId) @@ -156,9 +95,6 @@ class LagreImRiverTest : testRapid.firstMessage().toMap() shouldContainExactly forventetFail.tilMelding() verifySequence { - mockImRepo.hentNyesteInntektsmelding(any()) - } - verify(exactly = 0) { mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } } @@ -180,7 +116,6 @@ class LagreImRiverTest : testRapid.inspektør.size shouldBeExactly 0 verify(exactly = 0) { - mockImRepo.hentNyesteInntektsmelding(any()) mockImRepo.oppdaterMedBeriketDokument(any(), any(), any()) } } diff --git a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiverTest.kt b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiverTest.kt index 3334fb5ea..63384fa57 100644 --- a/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiverTest.kt +++ b/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiverTest.kt @@ -133,8 +133,6 @@ class LagreImSkjemaRiverTest : } test("håndterer at repo feiler") { - every { mockInntektsmeldingRepo.hentNyesteInntektsmelding(any()) } returns null - every { mockInntektsmeldingRepo.hentNyesteInntektsmeldingSkjema(any()) } throws RuntimeException("Tråbbel med den Rolls-Royce? Den jo vere garantert!")