Skip to content

Commit

Permalink
Fiks upsert av siste-oppfolgingsperiode
Browse files Browse the repository at this point in the history
  • Loading branch information
tu55eladd committed Aug 1, 2024
1 parent 57b72d1 commit 264ce19
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import no.nav.veilarbaktivitet.veilarbdbutil.VeilarbAktivitetSqlParameterSource;
import no.nav.veilarbaktivitet.config.database.Database;
import no.nav.veilarbaktivitet.person.Person;
import org.springframework.dao.DuplicateKeyException;
import no.nav.veilarbaktivitet.veilarbdbutil.VeilarbAktivitetSqlParameterSource;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
Expand Down Expand Up @@ -48,29 +47,24 @@ void uppsertOppfolingsperide(Oppfolgingsperiode oppfolgingsperiode) {
.addValue("startTid", oppfolgingsperiode.startTid())
.addValue("sluttTid", oppfolgingsperiode.sluttTid());

int antallOppdatert = jdbc.update("""
update SISTE_OPPFOLGINGSPERIODE
set PERIODE_UUID = :periode,
STARTDATO = :startTid,
SLUTTDATO = :sluttTid
int harNyerePeriode = jdbc.queryForObject("""
select count(*) FROM SISTE_OPPFOLGINGSPERIODE
where AKTORID = :aktorId
and (STARTDATO < :startTid or PERIODE_UUID = :periode)
""", params);
if (antallOppdatert == 1) {
log.info("oppdatert oppfolgignsperiode {}", oppfolgingsperiode);
and (STARTDATO > :startTid)
""", params, Integer.class);
if (harNyerePeriode == 1) {
log.info("Fant nyere siste periode enn:{} start:{} slutt:{}", oppfolgingsperiode.oppfolgingsperiodeId(), oppfolgingsperiode.startTid(), oppfolgingsperiode.sluttTid());
return;
}

try {
jdbc.update("""
insert into SISTE_OPPFOLGINGSPERIODE
(PERIODE_UUID, AKTORID, STARTDATO, SLUTTDATO)
VALUES (:periode, :aktorId, :startTid, :sluttTid)
""", params);
} catch (DuplicateKeyException e) {
log.warn("Insert på duplikat oppfolgingsperiode, ignorerer {}", oppfolgingsperiode.oppfolgingsperiodeId());
}
jdbc.update("""
insert into SISTE_OPPFOLGINGSPERIODE
(PERIODE_UUID, AKTORID, STARTDATO, SLUTTDATO)
VALUES (:periode, :aktorId, :startTid, :sluttTid)
ON CONFLICT (aktorid)
DO UPDATE SET PERIODE_UUID = :periode, STARTDATO = :startTid, SLUTTDATO = :sluttTid
""", params);

log.info("opprettet oppfolgingsperiode {}", oppfolgingsperiode);
log.info("opprettet oppfolgingsperiode: {} start: {} slutt: {}", oppfolgingsperiode.oppfolgingsperiodeId(), oppfolgingsperiode.startTid(), oppfolgingsperiode.sluttTid());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,29 @@ void skalHenteOgBrukeSistePeriodeFraDao() {
assertThat(fraBasen).isEqualTo(oppfolgingsperiodeId);
}

@Test
void skalHandtereFlereLikePerioder() {
MockBruker mockBruker = MockNavService.createHappyBruker();
UUID oppfolgingsperiodeId = UUID.randomUUID();
Oppfolgingsperiode oppfolgingsperiode = new Oppfolgingsperiode(mockBruker.getAktorId().get(), oppfolgingsperiodeId, ZonedDateTime.now().minusDays(5), null);
sistePeriodeDAO.uppsertOppfolingsperide(oppfolgingsperiode);
sistePeriodeDAO.uppsertOppfolingsperide(oppfolgingsperiode);
UUID fraBasen = sistePeriodeService.hentGjeldendeOppfolgingsperiodeMedFallback(mockBruker.getAktorIdAsAktorId());
assertThat(fraBasen).isEqualTo(oppfolgingsperiodeId);
}

@Test
void skalHoppeOverGammelPeriode() {
MockBruker mockBruker = MockNavService.createHappyBruker();
UUID oppfolgingsperiodeId = UUID.randomUUID();
Oppfolgingsperiode oppfolgingsperiode = new Oppfolgingsperiode(mockBruker.getAktorId().get(), oppfolgingsperiodeId, ZonedDateTime.now().minusDays(5), null);
Oppfolgingsperiode gammelPeriode = new Oppfolgingsperiode(mockBruker.getAktorId().get(), UUID.randomUUID(), ZonedDateTime.now().minusDays(10), null);
sistePeriodeDAO.uppsertOppfolingsperide(oppfolgingsperiode);
sistePeriodeDAO.uppsertOppfolingsperide(gammelPeriode);
UUID fraBasen = sistePeriodeService.hentGjeldendeOppfolgingsperiodeMedFallback(mockBruker.getAktorIdAsAktorId());
assertThat(fraBasen).isEqualTo(oppfolgingsperiodeId);
}

@Test
void fallBackHvisPeriodeAvsluttet() {
MockBruker mockBruker = MockNavService.createHappyBruker();
Expand Down

0 comments on commit 264ce19

Please sign in to comment.