From 2ae22946923e0793bbfd7fbce0f81f54cfb5ee95 Mon Sep 17 00:00:00 2001 From: Tore Langedal Endestad Date: Tue, 17 Dec 2024 16:11:01 +0100 Subject: [PATCH] Denormalisere noen felter inn i oppgavefelt_verdi_aktiv (steg 1) (#2813) --- .../mottak/oppgave/AktivOppgaveRepository.kt | 15 +++++++++------ ..._0071__oppgavefeltverdi_aktiv_denormaliser.sql | 3 +++ .../mottak/oppgave/AktivOppgaveRepositoryTest.kt | 10 +++++----- 3 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/migreringer/V1.0_0071__oppgavefeltverdi_aktiv_denormaliser.sql diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepository.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepository.kt index 7a3479724..999ea6013 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepository.kt @@ -219,15 +219,18 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) { } tx.batchPreparedNamedStatement( """ - insert into oppgavefelt_verdi_aktiv(oppgave_id, oppgavefelt_id, verdi, oppgavestatus) - VALUES (:oppgaveId, :oppgavefeltId, :verdi, cast(:oppgavestatus as oppgavestatus)) + insert into oppgavefelt_verdi_aktiv(oppgave_id, oppgavefelt_id, verdi, oppgavestatus, feltdefinisjon_ekstern_id, omrade_ekstern_id, oppgavetype_ekstern_id) + VALUES (:oppgaveId, :oppgavefeltId, :verdi, cast(:oppgavestatus as oppgavestatus), :feltdefinisjon_ekstern_id, :omrade_ekstern_id, :oppgavetype_ekstern_id) """.trimIndent(), inserts.map { verdi -> mapOf( "oppgaveId" to oppgaveId.id, "oppgavefeltId" to verdi.oppgavefeltId, "verdi" to verdi.verdi, - "oppgavestatus" to oppgave.status.kode + "oppgavestatus" to oppgave.status.kode, + "feltdefinisjon_ekstern_id" to verdi.oppgavefeltEksternId, + "omrade_ekstern_id" to oppgave.kildeområde, + "oppgavetype_ekstern_id" to oppgave.oppgavetype.eksternId, ) } ) @@ -280,11 +283,11 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) { @VisibleForTesting fun regnUtDiff(eksisterende: List, nye: List): DiffResultat { - val nyeVerdier = nye.map { Verdi(it.verdi, it.oppgavefelt.id!!) }.toSet() + val nyeVerdier = nye.map { Verdi(it.verdi, it.oppgavefelt.id!!, it.oppgavefelt.feltDefinisjon.eksternId) }.toSet() if (eksisterende.isEmpty()) { return DiffResultat(deletes = emptyList(), inserts = nyeVerdier, updates = emptyMap()) } - val eksisterendeVerdier = eksisterende.associate { Pair(Verdi(it.verdi, it.oppgavefelt.id!!), it.id!!) } + val eksisterendeVerdier = eksisterende.associate { Pair(Verdi(it.verdi, it.oppgavefelt.id!!, it.oppgavefelt.feltDefinisjon.eksternId), it.id!!) } val verdierBeggeSteder = eksisterendeVerdier.keys.intersect(nyeVerdier) val oppdaterMap: MutableMap = HashMap() @@ -407,5 +410,5 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) { val updates: Map ) - data class Verdi(val verdi: String, val oppgavefeltId: Long) + data class Verdi(val verdi: String, val oppgavefeltId: Long, val oppgavefeltEksternId: String) } \ No newline at end of file diff --git a/src/main/resources/migreringer/V1.0_0071__oppgavefeltverdi_aktiv_denormaliser.sql b/src/main/resources/migreringer/V1.0_0071__oppgavefeltverdi_aktiv_denormaliser.sql new file mode 100644 index 000000000..cf80f8fb6 --- /dev/null +++ b/src/main/resources/migreringer/V1.0_0071__oppgavefeltverdi_aktiv_denormaliser.sql @@ -0,0 +1,3 @@ +alter table oppgavefelt_verdi_aktiv add column omrade_ekstern_id varchar(100); +alter table oppgavefelt_verdi_aktiv add column oppgavetype_ekstern_id varchar(100); +alter table oppgavefelt_verdi_aktiv add column feltdefinisjon_ekstern_id varchar(100); diff --git a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepositoryTest.kt b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepositoryTest.kt index 9f4e88fbe..796b0c5a5 100644 --- a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepositoryTest.kt +++ b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/oppgave/AktivOppgaveRepositoryTest.kt @@ -38,8 +38,8 @@ class AktivOppgaveRepositoryTest { assertThat(diffResultat.deletes).isEmpty() assertThat(diffResultat.updates).isEmpty() assertThat(diffResultat.inserts).containsOnly( - AktivOppgaveRepository.Verdi( "9001", 1), - AktivOppgaveRepository.Verdi( "9003", 1)) + AktivOppgaveRepository.Verdi( "9001", 1, "aksjonspunkt"), + AktivOppgaveRepository.Verdi( "9003", 1, "aksjonspunkt")) } @Test @@ -67,7 +67,7 @@ class AktivOppgaveRepositoryTest { ) val diffResultat = AktivOppgaveRepository.regnUtDiff(eksisterende, nye) assertThat(diffResultat.deletes).isEmpty() - assertThat(diffResultat.updates).containsOnly(Pair(3L, AktivOppgaveRepository.Verdi("1111", 1))) + assertThat(diffResultat.updates).containsOnly(Pair(3L, AktivOppgaveRepository.Verdi("1111", 1, "aksjonspunkt"))) assertThat(diffResultat.inserts).isEmpty() } @@ -87,10 +87,10 @@ class AktivOppgaveRepositoryTest { val diffResultat = AktivOppgaveRepository.regnUtDiff(eksisterende, nye) assertThat(diffResultat.deletes.size).isEqualTo(2) assertThat(diffResultat.updates.entries.size).isEqualTo(1) - assertThat(diffResultat.updates.values.first()).isEqualTo(AktivOppgaveRepository.Verdi("1111", 1)) + assertThat(diffResultat.updates.values.first()).isEqualTo(AktivOppgaveRepository.Verdi("1111", 1, "aksjonspunkt")) //vi bryr oss ikke om hvilke av aksjonspunktverdiene (3 og 4) som gjenbrukes, men en skal slettes og en skal oppdateres assertThat(diffResultat.updates.keys + diffResultat.deletes).containsOnly(3L, 4L, 5L) - assertThat(diffResultat.inserts).containsOnly(AktivOppgaveRepository.Verdi("test2", 3)) + assertThat(diffResultat.inserts).containsOnly(AktivOppgaveRepository.Verdi("test2", 3, "test2")) } fun mockOppgaveFeltverdi(eksternId: String, listetype: Boolean, verdi: String, oppgavefeltId: Long = 1, id : Long? = null): OppgaveFeltverdi {