Skip to content

Commit e411a80

Browse files
committed
Legg på transaction på utbetalingsstatistikk
1 parent c4337d9 commit e411a80

File tree

6 files changed

+21
-10
lines changed

6 files changed

+21
-10
lines changed

app/src/main/kotlin/no/nav/tiltakspenger/vedtak/context/UtbetalingContext.kt

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ open class UtbetalingContext(
4040
utbetalingsvedtakRepo = utbetalingsvedtakRepo,
4141
rammevedtakRepo = rammevedtakRepo,
4242
statistikkStønadRepo = statistikkStønadRepo,
43+
sessionFactory = sessionFactory,
4344
)
4445
}
4546
val hentUtbetalingsvedtakService by lazy {

app/src/main/kotlin/no/nav/tiltakspenger/vedtak/repository/statistikk/stønad/StatistikkStønadPostgresRepo.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class StatistikkStønadPostgresRepo(
102102
"arsak" to dto.årsak,
103103
"posteringsDato" to dto.posteringDato,
104104
"gyldigFraDato" to dto.gyldigFraDatoPostering,
105-
"gyldigTilDat" to dto.gyldigTilDatoPostering,
105+
"gyldigTilDato" to dto.gyldigTilDatoPostering,
106106
),
107107
).asUpdate,
108108
)

app/src/main/kotlin/no/nav/tiltakspenger/vedtak/repository/utbetaling/UtbetalingsvedtakPostgresRepo.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import no.nav.tiltakspenger.libs.common.Fnr
88
import no.nav.tiltakspenger.libs.common.MeldekortId
99
import no.nav.tiltakspenger.libs.common.SakId
1010
import no.nav.tiltakspenger.libs.common.VedtakId
11+
import no.nav.tiltakspenger.libs.persistering.domene.TransactionContext
1112
import no.nav.tiltakspenger.libs.persistering.infrastruktur.PostgresSessionFactory
1213
import no.nav.tiltakspenger.meldekort.domene.Meldekort.UtfyltMeldekort
1314
import no.nav.tiltakspenger.meldekort.domene.Meldeperiode
@@ -21,8 +22,8 @@ import no.nav.tiltakspenger.vedtak.repository.meldekort.toMeldekortStatus
2122
internal class UtbetalingsvedtakPostgresRepo(
2223
private val sessionFactory: PostgresSessionFactory,
2324
) : UtbetalingsvedtakRepo {
24-
override fun lagre(vedtak: Utbetalingsvedtak) {
25-
sessionFactory.withSession { session ->
25+
override fun lagre(vedtak: Utbetalingsvedtak, context: TransactionContext?) {
26+
sessionFactory.withSession(context) { session ->
2627
session.run(
2728
queryOf(
2829
"""

domene/src/main/kotlin/no/nav/tiltakspenger/utbetaling/ports/UtbetalingsvedtakRepo.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ package no.nav.tiltakspenger.utbetaling.ports
33
import no.nav.tiltakspenger.libs.common.BehandlingId
44
import no.nav.tiltakspenger.libs.common.SakId
55
import no.nav.tiltakspenger.libs.common.VedtakId
6+
import no.nav.tiltakspenger.libs.persistering.domene.TransactionContext
67
import no.nav.tiltakspenger.meldekort.domene.Meldekort
78
import no.nav.tiltakspenger.saksbehandling.ports.SendtUtbetaling
89
import no.nav.tiltakspenger.utbetaling.domene.Utbetalingsvedtak
910

1011
interface UtbetalingsvedtakRepo {
11-
fun lagre(vedtak: Utbetalingsvedtak)
12+
fun lagre(vedtak: Utbetalingsvedtak, context: TransactionContext? = null)
1213

1314
fun markerSendtTilUtbetaling(
1415
vedtakId: VedtakId,

domene/src/main/kotlin/no/nav/tiltakspenger/utbetaling/service/OpprettUtbetalingsvedtakService.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package no.nav.tiltakspenger.utbetaling.service
22

33
import arrow.core.Either
44
import mu.KotlinLogging
5+
import no.nav.tiltakspenger.libs.persistering.domene.SessionFactory
56
import no.nav.tiltakspenger.meldekort.domene.Meldekort.UtfyltMeldekort
67
import no.nav.tiltakspenger.saksbehandling.domene.vedtak.Rammevedtak
78
import no.nav.tiltakspenger.saksbehandling.ports.RammevedtakRepo
@@ -21,6 +22,7 @@ class OpprettUtbetalingsvedtakService(
2122
private val utbetalingsvedtakRepo: UtbetalingsvedtakRepo,
2223
private val rammevedtakRepo: RammevedtakRepo,
2324
private val statistikkStønadRepo: StatistikkStønadRepo,
25+
private val sessionFactory: SessionFactory,
2426
) {
2527
val logger = KotlinLogging.logger { }
2628

@@ -34,9 +36,12 @@ class OpprettUtbetalingsvedtakService(
3436
// TODO pre-mvp jah: Lag en type som passer på at disse er sortert riktig. Dette vil være en del av arbeidet å sentralisere Sak.kt
3537
val eksisterendeUtbetalingsvedtak = utbetalingsvedtakRepo.hentForSakId(meldekort.sakId)
3638
meldekort.tilUtbetalingsperiode(rammevedtak, eksisterendeUtbetalingsvedtak.lastOrNull()?.id).also {
37-
utbetalingsvedtakRepo.lagre(it)
38-
// TODO pre-mvp jah: lager en herlig transaksjon som lagrer statistikk og utbetalingsvedtak i samme transaksjon.
39-
statistikkStønadRepo.lagre(it.tilStatistikk())
39+
sessionFactory.withTransactionContext { tx ->
40+
41+
utbetalingsvedtakRepo.lagre(it, tx)
42+
// TODO pre-mvp jah: lager en herlig transaksjon som lagrer statistikk og utbetalingsvedtak i samme transaksjon.
43+
statistikkStønadRepo.lagre(it.tilStatistikk(), tx)
44+
}
4045
}
4146
}.onLeft {
4247
logger.error(it) { "Feil ved opprettelse av utbetalingsvedtak for meldekortId=${meldekort.id}" }

test-common/src/main/kotlin/no/nav/tiltakspenger/fakes/repos/UtbetalingsvedtakFakeRepo.kt

+6-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import arrow.atomic.Atomic
44
import no.nav.tiltakspenger.libs.common.BehandlingId
55
import no.nav.tiltakspenger.libs.common.SakId
66
import no.nav.tiltakspenger.libs.common.VedtakId
7+
import no.nav.tiltakspenger.libs.persistering.domene.TransactionContext
78
import no.nav.tiltakspenger.meldekort.domene.Meldekort.UtfyltMeldekort
89
import no.nav.tiltakspenger.saksbehandling.ports.SendtUtbetaling
910
import no.nav.tiltakspenger.utbetaling.domene.Utbetalingsvedtak
@@ -15,7 +16,7 @@ class UtbetalingsvedtakFakeRepo(
1516
) : UtbetalingsvedtakRepo {
1617
private val data = Atomic(mutableMapOf<VedtakId, Utbetalingsvedtak>())
1718

18-
override fun lagre(vedtak: Utbetalingsvedtak) {
19+
override fun lagre(vedtak: Utbetalingsvedtak, context: TransactionContext?) {
1920
data.get()[vedtak.id] = vedtak
2021
}
2122

@@ -44,7 +45,9 @@ class UtbetalingsvedtakFakeRepo(
4445
data.get().values.none { utbetalingsvedtak -> utbetalingsvedtak.meldekortperiode.meldekortId == it.id }
4546
}
4647

47-
override fun hentUtbetalingsvedtakForUtsjekk(limit: Int): List<Utbetalingsvedtak> = data.get().values.filter { it.sendtTilUtbetaling }
48+
override fun hentUtbetalingsvedtakForUtsjekk(limit: Int): List<Utbetalingsvedtak> =
49+
data.get().values.filter { it.sendtTilUtbetaling }
4850

49-
override fun hentUtbetalingsvedtakForDokument(limit: Int): List<Utbetalingsvedtak> = data.get().values.filter { it.sendtTilDokument }
51+
override fun hentUtbetalingsvedtakForDokument(limit: Int): List<Utbetalingsvedtak> =
52+
data.get().values.filter { it.sendtTilDokument }
5053
}

0 commit comments

Comments
 (0)