Skip to content

Commit

Permalink
Endre til hendelseskonsumenter og forenkle inst-hendelser
Browse files Browse the repository at this point in the history
  • Loading branch information
hestad committed Aug 31, 2023
1 parent 2d11326 commit a3eac66
Show file tree
Hide file tree
Showing 58 changed files with 1,086 additions and 835 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ import no.nav.su.se.bakover.database.utbetaling.UtbetalingPostgresRepo
import no.nav.su.se.bakover.database.vedtak.VedtakPostgresRepo
import no.nav.su.se.bakover.domain.DatabaseRepos
import no.nav.su.se.bakover.domain.satser.SatsFactoryForSupplerendeStønad
import no.nav.su.se.bakover.hendelse.infrastructure.persistence.HendelseActionPostgresRepo
import no.nav.su.se.bakover.hendelse.infrastructure.persistence.HendelsePostgresRepo
import no.nav.su.se.bakover.hendelse.infrastructure.persistence.HendelsekonsumenterPostgresRepo
import no.nav.su.se.bakover.institusjonsopphold.database.InstitusjonsoppholdHendelsePostgresRepo
import no.nav.su.se.bakover.oppgave.infrastructure.OppgaveHendelsePostgresRepo
import no.nav.su.se.bakover.utenlandsopphold.infrastruture.persistence.UtenlandsoppholdPostgresRepo
Expand Down Expand Up @@ -281,10 +281,9 @@ data object DatabaseBuilder {
hendelseRepo = hendelseRepo,
utenlandsoppholdRepo = utenlandsoppholdRepo,
dokumentSkattRepo = DokumentSkattPostgresRepo(dbMetrics, sessionFactory, clock),
institusjonsoppholdHendelseRepo = InstitusjonsoppholdHendelsePostgresRepo(sessionFactory, dbMetrics, hendelseRepo, clock),
oppgaveHendelseRepo = OppgaveHendelsePostgresRepo(sessionFactory, dbMetrics, hendelseRepo, clock),
hendelseActionRepo = HendelseActionPostgresRepo(sessionFactory),

institusjonsoppholdHendelseRepo = InstitusjonsoppholdHendelsePostgresRepo(dbMetrics, hendelseRepo),
oppgaveHendelseRepo = OppgaveHendelsePostgresRepo(dbMetrics, hendelseRepo),
hendelsekonsumenterRepo = HendelsekonsumenterPostgresRepo(sessionFactory),
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
alter table hendelse_action
RENAME TO hendelse_konsument;

ALTER TABLE hendelse_konsument
RENAME COLUMN action TO konsumentId;

-- Dette er mer en safeguard. Skal egentlig ivaretas av domenet.
CREATE UNIQUE INDEX idx_unique_hendelseid_konsumentid
ON hendelse_konsument (hendelseId, konsumentId);

ALTER TABLE hendelse DROP COLUMN triggetAv;
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionCon
import no.nav.su.se.bakover.common.infrastructure.persistence.hentListe
import no.nav.su.se.bakover.common.persistence.SessionContext
import no.nav.su.se.bakover.hendelse.domain.HendelseId
import no.nav.su.se.bakover.hendelse.domain.HendelseskonsumentId
import no.nav.su.se.bakover.hendelse.domain.Hendelsestype
import no.nav.su.se.bakover.test.persistence.TestDataHelper
import no.nav.su.se.bakover.test.persistence.withMigratedDb
import org.junit.jupiter.api.Test
import java.util.UUID

class HendelseActionRepoTest {
class HendelsekonsumenterRepoTest {

@Test
fun `lagrer en hendelse`() {
Expand All @@ -35,9 +37,9 @@ class HendelseActionRepoTest {
withMigratedDb { dataSource ->
val testDataHelper = TestDataHelper(dataSource)
val lagret = testDataHelper.persisterInstitusjonsoppholdHendelse()
val hentet = testDataHelper.hendelseActionRepo.hentSakOgHendelsesIderSomIkkeHarKjørtAction(
"INSTITUSJON",
"INSTITUSJONSOPPHOLD",
val hentet = testDataHelper.hendelsekonsumenterRepo.hentUteståendeSakOgHendelsesIderForKonsumentOgType(
HendelseskonsumentId("INSTITUSJON"),
Hendelsestype("INSTITUSJONSOPPHOLD"),
)
hentet shouldBe mapOf(lagret.sakId to listOf(lagret.hendelseId))
}
Expand All @@ -46,7 +48,7 @@ class HendelseActionRepoTest {
private fun hentAlle(tx: SessionContext): List<Triple<UUID, HendelseId, String>> {
return tx.withSession {
"""
select * from hendelse_action
select * from hendelse_konsument
""".trimIndent().hentListe(emptyMap(), it) {
Triple(it.uuid("id"), HendelseId.fromUUID(it.uuid("hendelseId")), it.string("action"))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,12 @@ import java.util.UUID
* I noen tilfeller sendes brevet rett etter iverksettelsen (ingen nye utbetalingslinjer).
* Dersom vi har sendt noe til oppdrag venter vi på kvittering. (I førsteomgang brukes bare denne hendelsen i dette tilfellet)
* Dersom simuleringa viste feilutbetaling, går vi inn i et tilbakekrevingsløp, da venter på på kravgrunnlaget før vi sender brevet.
*
* @param triggetAv Hendelsen som førte til at vi sendte brevet. Se over.
*/
data class LagretDokumentHendelse(
override val hendelseId: HendelseId,
override val hendelsestidspunkt: Tidspunkt,
override val versjon: Hendelsesversjon,
override val meta: HendelseMetadata,
override val triggetAv: HendelseId,
override val sakId: UUID,
val dokument: Dokument.MedMetadata,
) : Sakshendelse {
Expand All @@ -46,7 +43,6 @@ data class LagretDokumentHendelse(
entitetId: UUID,
forrigeVersjon: Hendelsesversjon,
sakId: UUID,
triggetAv: HendelseId,
dokument: Dokument.MedMetadata,
): LagretDokumentHendelse {
return LagretDokumentHendelse(
Expand All @@ -55,7 +51,6 @@ data class LagretDokumentHendelse(
meta = hendelseMetadata,
sakId = sakId,
versjon = forrigeVersjon,
triggetAv = triggetAv,
dokument = dokument,
).also {
require(it.entitetId == entitetId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import no.nav.su.se.bakover.domain.stønadsperiode.SendPåminnelseNyStønadsperi
import no.nav.su.se.bakover.domain.søknad.SøknadRepo
import no.nav.su.se.bakover.domain.søknadsbehandling.SøknadsbehandlingRepo
import no.nav.su.se.bakover.domain.vedtak.VedtakRepo
import no.nav.su.se.bakover.hendelse.domain.HendelseActionRepo
import no.nav.su.se.bakover.hendelse.domain.HendelseRepo
import no.nav.su.se.bakover.hendelse.domain.HendelsekonsumenterRepo
import no.nav.su.se.bakover.oppgave.domain.OppgaveHendelseRepo
import no.nav.su.se.bakover.utenlandsopphold.domain.UtenlandsoppholdRepo

Expand Down Expand Up @@ -48,5 +48,5 @@ data class DatabaseRepos(
val dokumentSkattRepo: DokumentSkattRepo,
val institusjonsoppholdHendelseRepo: InstitusjonsoppholdHendelseRepo,
val oppgaveHendelseRepo: OppgaveHendelseRepo,
val hendelseActionRepo: HendelseActionRepo,
val hendelsekonsumenterRepo: HendelsekonsumenterRepo,
)
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import java.util.UUID
* @property entitetId Også kalt streamId. knytter et domeneområdet sammen (f.eks sak)
* @property versjon rekkefølgen hendelser skjer innenfor [entitetId]
* @property hendelsestidspunkt Tidspunktet hendelsen skjedde fra domenet sin side.
* @property triggetAv hvilken hendelse førte til at denne hendelsen ble opprettet - merk at denne er kun for interne hendelser
* @property meta metadata knyttet til hendelsen for auditing/tracing/debug-formål.
*/
interface Hendelse<T : Hendelse<T>> : Comparable<T> {
Expand All @@ -17,6 +16,5 @@ interface Hendelse<T : Hendelse<T>> : Comparable<T> {
val entitetId: UUID
val versjon: Hendelsesversjon
val hendelsestidspunkt: Tidspunkt
val triggetAv: HendelseId?
val meta: HendelseMetadata
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.su.se.bakover.hendelse.domain

import no.nav.su.se.bakover.common.persistence.SessionContext
import java.util.UUID

interface HendelsekonsumenterRepo {
fun lagre(
hendelser: List<HendelseId>,
konsumentId: HendelseskonsumentId,
context: SessionContext,
)
fun lagre(
hendelseId: HendelseId,
konsumentId: HendelseskonsumentId,
context: SessionContext,
)

fun hentUteståendeSakOgHendelsesIderForKonsumentOgType(
konsumentId: HendelseskonsumentId,
hendelsestype: Hendelsestype,
sx: SessionContext? = null,
limit: Int = 10,
): Map<UUID, List<HendelseId>>

fun hentHendelseIderForKonsumentOgType(
konsumentId: HendelseskonsumentId,
hendelsestype: Hendelsestype,
sx: SessionContext? = null,
limit: Int = 10,
): List<HendelseId>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package no.nav.su.se.bakover.hendelse.domain

/**
* Implementeres av de som skal lytte på hendelser.
*
* @property konsumentId En unik id for denne subscriberen.
*/
interface Hendelseskonsument {
val konsumentId: HendelseskonsumentId
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.su.se.bakover.hendelse.domain

@JvmInline
value class HendelseskonsumentId(val value: String) {
override fun toString(): String = value
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.su.se.bakover.hendelse.domain

@JvmInline
value class Hendelsestype(val value: String) {
override fun toString(): String = value
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ data class SakOpprettetHendelse private constructor(
) : Sakshendelse {
override val tidligereHendelseId: HendelseId? = null
override val entitetId = sakId
override val triggetAv: HendelseId? = null

// Dette vil alltid være første versjon i en hendelsesserie for en sak.
override val versjon = Hendelsesversjon(1L)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import java.util.UUID
* @property entitetId Også kalt streamId. knytter et domeneområdet sammen (f.eks sak)
* @property versjon rekkefølgen hendelser skjer innenfor [entitetId]
* @property hendelsestidspunkt Tidspunktet hendelsen skjedde fra domenet sin side.
* @property triggetAv hvilken hendelse førte til at denne hendelsen ble opprettet - merk at denne er kun for interne hendelser
* @property meta metadata knyttet til hendelsen for auditing/tracing/debug-formål.
*/
interface Sakshendelse : Hendelse<Sakshendelse> {
Expand All @@ -18,6 +17,5 @@ interface Sakshendelse : Hendelse<Sakshendelse> {
override val versjon: Hendelsesversjon
override val hendelsestidspunkt: Tidspunkt
override val meta: HendelseMetadata
override val triggetAv: HendelseId?
val sakId: UUID
}

This file was deleted.

Loading

0 comments on commit a3eac66

Please sign in to comment.