Skip to content

Commit

Permalink
Denormalisere noen felter inn i oppgavefelt_verdi_aktiv (steg 1) (#2813)
Browse files Browse the repository at this point in the history
  • Loading branch information
tendestad authored Dec 17, 2024
1 parent e9e5ca4 commit 2ae2294
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
}
)
Expand Down Expand Up @@ -280,11 +283,11 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) {

@VisibleForTesting
fun regnUtDiff(eksisterende: List<OppgaveFeltverdi>, nye: List<OppgaveFeltverdi>): 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<Long, Verdi> = HashMap()
Expand Down Expand Up @@ -407,5 +410,5 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) {
val updates: Map<Long, Verdi>
)

data class Verdi(val verdi: String, val oppgavefeltId: Long)
data class Verdi(val verdi: String, val oppgavefeltId: Long, val oppgavefeltEksternId: String)
}
Original file line number Diff line number Diff line change
@@ -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);
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
}

Expand All @@ -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 {
Expand Down

0 comments on commit 2ae2294

Please sign in to comment.