Skip to content

Commit

Permalink
Ved opprettelse av person eller ident så skal identen sendes til kafk… (
Browse files Browse the repository at this point in the history
#2502)

* Ved opprettelse av person eller ident så skal identen sendes til kafka-kø for minside

* Legger til mock-kafka profil

* Payload på task kan ikke være større enn 8000 bytes - lagrer derfor kun aktiv personIdent som payload på tasken for å aktivere brukere for mikrofrontend

* Skal ha færre i en chunk per task for å kunne passe inn i en payload - maks str er 4672 for å kunne indeksere en rad

---------

Co-authored-by: charliemidtlyng <[email protected]>
  • Loading branch information
throndi and charliemidtlyng authored Jan 9, 2024
1 parent 125fe21 commit 94dc622
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import no.nav.familie.ef.sak.fagsak.domain.FagsakPerson
import no.nav.familie.ef.sak.fagsak.domain.PersonIdent
import no.nav.familie.ef.sak.infrastruktur.exception.feilHvis
import no.nav.familie.ef.sak.infrastruktur.exception.feilHvisIkke
import no.nav.familie.ef.sak.minside.MikrofrontendEnableBrukereTask
import no.nav.familie.ef.sak.repository.findByIdOrThrow
import no.nav.familie.prosessering.internal.TaskService
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.util.UUID

@Service
class FagsakPersonService(private val fagsakPersonRepository: FagsakPersonRepository) {
class FagsakPersonService(private val fagsakPersonRepository: FagsakPersonRepository, private val taskService: TaskService) {

fun hentPerson(personId: UUID): FagsakPerson = fagsakPersonRepository.findByIdOrThrow(personId)

Expand All @@ -31,19 +33,26 @@ class FagsakPersonService(private val fagsakPersonRepository: FagsakPersonReposi
feilHvisIkke(personIdenter.contains(gjeldendePersonIdent)) {
"Liste med personidenter inneholder ikke gjeldende personident"
}
return ( // TODO : Lag task som sender over til minside kafka-kø (ved insert)
return (
fagsakPersonRepository.findByIdent(personIdenter)
?: fagsakPersonRepository.insert(FagsakPerson(identer = setOf(PersonIdent(gjeldendePersonIdent))))
?: opprettFagsakPersonOgAktiverForMinSide(gjeldendePersonIdent)
)
}

@Transactional
fun oppdaterIdent(fagsakPerson: FagsakPerson, gjeldendePersonIdent: String): FagsakPerson {
return if (fagsakPerson.hentAktivIdent() != gjeldendePersonIdent) {
fagsakPersonRepository.update(fagsakPerson.medOppdatertGjeldendeIdent(gjeldendePersonIdent))
// TODO : Lag task som sender over til minside kafka-kø
if (fagsakPerson.hentAktivIdent() != gjeldendePersonIdent) {
val oppdatertFagsakPerson = fagsakPerson.medOppdatertGjeldendeIdent(gjeldendePersonIdent)
taskService.save(MikrofrontendEnableBrukereTask.opprettTask(oppdatertFagsakPerson))
return fagsakPersonRepository.update(oppdatertFagsakPerson)
} else {
fagsakPerson
return fagsakPerson
}
}

fun opprettFagsakPersonOgAktiverForMinSide(gjeldendePersonIdent: String): FagsakPerson {
val fagsakPerson = fagsakPersonRepository.insert(FagsakPerson(identer = setOf(PersonIdent(gjeldendePersonIdent))))
taskService.save(MikrofrontendEnableBrukereTask.opprettTask(fagsakPerson))
return fagsakPerson
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class MinsideForvaltningsController(
@PostMapping("aktiver-alle")
fun aktiverAllePersonerForMinSide() {
feilHvisIkke(erUtviklerMedVeilderrolle()) { "Kan kun kjøres av utvikler med veilederrolle" }
fagsakPersonRepository.findAll().chunked(500)
fagsakPersonRepository.findAll().chunked(250)
.forEach { fagsakPersoner ->
val task = MikrofrontendEnableBrukereTask.opprettTask(fagsakPersoner)
taskService.save(task)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ class MikrofrontendEnableBrukereTask(val minSideKafkaProducerService: MinSideKaf

override fun doTask(task: Task) {
logger.info("Starter task for aktivering av brukere for mikrofrontend")
val fagsakPersonIdenter = objectMapper.readValue<List<FagsakPerson>>(task.payload)
fagsakPersonIdenter.forEach { fagsakPerson ->
minSideKafkaProducerService.aktiver(fagsakPerson.hentAktivIdent())
val personIdenter = objectMapper.readValue<List<String>>(task.payload)
personIdenter.forEach { personIdent ->
minSideKafkaProducerService.aktiver(personIdent)
}
}

Expand All @@ -31,7 +31,13 @@ class MikrofrontendEnableBrukereTask(val minSideKafkaProducerService: MinSideKaf
fun opprettTask(fagsakPerson: List<FagsakPerson>): Task {
return Task(
type = TYPE,
payload = objectMapper.writeValueAsString(fagsakPerson),
payload = objectMapper.writeValueAsString(fagsakPerson.map { it.hentAktivIdent() }),
)
}
fun opprettTask(fagsakPerson: FagsakPerson): Task {
return Task(
type = TYPE,
payload = objectMapper.writeValueAsString(listOf(fagsakPerson.hentAktivIdent())),
)
}
const val TYPE = "mikrofrontendEnableBrukereTask"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
"mock-historiskpensjon",
"mock-featuretoggle",
"mock-egen-ansatt",
"mock-kafka",
)
@EnableMockOAuth2Server
abstract class OppslagSpringRunnerTest {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.familie.ef.sak.no.nav.familie.ef.sak.infrastruktur.config

import io.mockk.mockk
import no.nav.familie.ef.sak.minside.MinSideKafkaProducerService
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Primary
import org.springframework.context.annotation.Profile

@Configuration
class KafkaMock {

@Profile("mock-kafka")
@Bean
@Primary
fun minSideKafkaProducerService(): MinSideKafkaProducerService {
return mockk(relaxed = true)
}
}

0 comments on commit 94dc622

Please sign in to comment.