Skip to content

Commit aa61dcf

Browse files
authored
Merge pull request #25 from navikt/ekstern-varsling-status
Ekstern varsling status
2 parents 5a4686d + 531437b commit aa61dcf

32 files changed

+416
-429
lines changed

build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ dependencies {
2626
implementation(Flyway.core)
2727
implementation(Flyway.postgres)
2828
implementation(Hikari.cp)
29+
implementation(JacksonDatatype.datatypeJsr310)
30+
implementation(JacksonDatatype.moduleKotlin)
2931
implementation(KotlinLogging.logging)
3032
implementation(Ktor.Server.core)
3133
implementation(Ktor.Server.netty)
@@ -35,11 +37,12 @@ dependencies {
3537
implementation(Ktor.Server.statusPages)
3638
implementation(Ktor.Serialization.jackson)
3739
implementation(KtorHtml.htmlBuilder)
40+
implementation(Logstash.logbackEncoder)
3841
implementation(TmsCommonLib.utils)
3942
implementation(TmsKtorTokenSupport.azureValidation)
4043
implementation(Postgresql.postgresql)
41-
implementation(RapidsAndRivers.rapidsAndRivers)
4244
implementation(KotliQuery.kotliquery)
45+
implementation(TmsKafkaTools.kafkaApplication)
4346

4447
testImplementation(Junit.api)
4548
testImplementation(Junit.engine)

buildSrc/src/main/kotlin/default/dependencies.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ interface TmsCommonLibDefaults: DependencyGroup {
228228

229229
interface TmsKafkaToolsDefaults: DependencyGroup {
230230
override val groupId get() = "no.nav.tms.kafka"
231-
override val version get() = "1.4.4"
231+
override val version get() = "1.5.0-onReady-5"
232232

233233
val kafkaApplication get() = dependency("kafka-application")
234234
}

src/main/kotlin/no/nav/tms/statistikk/api/StatistikkContent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ fun HTML.buildStats() {
2525
}
2626
}
2727

28-
internal fun OutputStream.writeInnloggingCSV(innlogingPerDag: Int) =
28+
fun OutputStream.writeInnloggingCSV(innlogingPerDag: Int) =
2929
bufferedWriter().apply {
3030
write("""Innlogging etter ekstern varsling,$innlogingPerDag""")
3131
flush()
3232
}
3333

34-
class StatistikkContentException(message: String) : Exception(message)
34+
class StatistikkContentException(message: String) : Exception(message)

src/main/kotlin/no/nav/tms/statistikk/api/routes.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import io.ktor.server.routing.*
88
import no.nav.tms.statistikk.login.LoginRepository
99

1010

11-
internal fun Routing.statistikk(loginRepository: LoginRepository) {
11+
fun Routing.statistikk(loginRepository: LoginRepository) {
1212
route("/hent") {
1313

1414
get {
Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
package no.nav.tms.statistikk
22

3-
import no.nav.helse.rapids_rivers.RapidApplication
4-
import no.nav.helse.rapids_rivers.RapidApplication.RapidApplicationConfig.Companion.fromEnv
5-
import no.nav.helse.rapids_rivers.RapidsConnection
3+
import no.nav.tms.kafka.application.KafkaApplication
64
import no.nav.tms.statistikk.database.Flyway
75
import no.nav.tms.statistikk.database.PostgresDatabase
86
import no.nav.tms.statistikk.eksternVarsling.EksternVarslingRepository
9-
import no.nav.tms.statistikk.eksternVarsling.EksternVarslingSink
7+
import no.nav.tms.statistikk.eksternVarsling.EksternVarslingSubscriber
108
import no.nav.tms.statistikk.login.LoginRepository
119
import no.nav.tms.statistikk.microfrontends.MicrofrontendRepository
12-
import no.nav.tms.statistikk.microfrontends.MicrofrontendSink
13-
import no.nav.tms.statistikk.utkast.UtkastRespository
14-
import no.nav.tms.statistikk.utkast.UtkastCreatedSink
15-
import no.nav.tms.statistikk.utkast.UtkastDeletedSink
10+
import no.nav.tms.statistikk.microfrontends.MicrofrontendSubscriber
11+
import no.nav.tms.statistikk.utkast.*
1612
import no.nav.tms.statistikk.varsel.*
1713

1814
fun main() {
@@ -32,21 +28,33 @@ private fun startRapid(
3228
val eksternVarslingRepository = EksternVarslingRepository(database)
3329
val utkastRespository = UtkastRespository(database)
3430

35-
RapidApplication.Builder(fromEnv(environment.rapidConfig())).withKtorModule {
36-
statistikkApi(loginRepository)
37-
}.build().apply {
38-
VarselAktivertSink(this, varselRepository)
39-
VarselInaktivertSink(this, varselRepository)
40-
VarselPerDagSink(this, varselRepository)
41-
EksternVarslingSink(this, eksternVarslingRepository)
42-
UtkastCreatedSink(this, utkastRespository)
43-
UtkastDeletedSink(this,utkastRespository)
44-
MicrofrontendSink(this, MicrofrontendRepository(database))
45-
}.apply {
46-
register(object : RapidsConnection.StatusListener {
47-
override fun onStartup(rapidsConnection: RapidsConnection) {
48-
Flyway.runFlywayMigrations(environment)
49-
}
50-
})
31+
KafkaApplication.build {
32+
kafkaConfig {
33+
groupId = environment.groupId
34+
readTopics(
35+
"min-side.brukervarsel-v1",
36+
"min-side.aapen-utkast-v1",
37+
"min-side.aapen-microfrontend-v1"
38+
)
39+
eventNameFields("@event_name", "@action")
40+
}
41+
42+
ktorModule {
43+
statistikkApi(loginRepository)
44+
}
45+
46+
subscribers(
47+
VarselAktivertSubscriber(varselRepository),
48+
VarselInaktivertSubscriber(varselRepository),
49+
VarselPerDagSubscriber(varselRepository),
50+
EksternVarslingSubscriber(eksternVarslingRepository),
51+
UtkastCreatedSubscriber(utkastRespository),
52+
UtkastDeletedSubscriber(utkastRespository),
53+
MicrofrontendSubscriber(MicrofrontendRepository(database))
54+
)
55+
56+
onStartup {
57+
Flyway.runFlywayMigrations(environment)
58+
}
5159
}.start()
5260
}

src/main/kotlin/no/nav/tms/statistikk/eksternVarsling/EksternVarslingSink.kt

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package no.nav.tms.statistikk.eksternVarsling
2+
3+
import no.nav.tms.kafka.application.JsonMessage
4+
import no.nav.tms.kafka.application.Subscriber
5+
import no.nav.tms.kafka.application.Subscription
6+
import no.nav.tms.statistikk.asUtcDateTime
7+
import java.time.LocalDateTime
8+
9+
10+
class EksternVarslingSubscriber(
11+
private val eksternVarslingRepository: EksternVarslingRepository
12+
) : Subscriber() {
13+
14+
override fun subscribe() = Subscription.forEvents("eksternStatusOppdatert", "eksternVarslingStatusOppdatert")
15+
.withFields(
16+
"kanal",
17+
"varselId",
18+
"ident",
19+
"tidspunkt"
20+
)
21+
.withValue("status", "sendt")
22+
23+
override suspend fun receive(jsonMessage: JsonMessage) {
24+
eksternVarslingRepository.insertEksternVarsling(
25+
eventId = jsonMessage.varselId,
26+
kanal = jsonMessage.kanal,
27+
ident = jsonMessage.ident,
28+
tidspunkt = jsonMessage.tidspunkt
29+
)
30+
eksternVarslingRepository.updateVarsel(jsonMessage.varselId, jsonMessage.kanal)
31+
}
32+
}
33+
34+
val JsonMessage.ident: String
35+
get() = get("ident").asText()
36+
val JsonMessage.kanal: String
37+
get() = get("kanal").asText()
38+
val JsonMessage.varselId: String
39+
get() = get("varselId").asText()
40+
val JsonMessage.tidspunkt: LocalDateTime
41+
get() = get("tidspunkt").asUtcDateTime()
42+
43+
44+
45+

src/main/kotlin/no/nav/tms/statistikk/microfrontends/MicrofrontendSink.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package no.nav.tms.statistikk.microfrontends
2+
3+
import no.nav.tms.kafka.application.JsonMessage
4+
import no.nav.tms.kafka.application.Subscriber
5+
import no.nav.tms.kafka.application.Subscription
6+
7+
class MicrofrontendSubscriber(
8+
private val microfrontendRepository: MicrofrontendRepository
9+
) : Subscriber() {
10+
11+
override fun subscribe() = Subscription.forAllEvents()
12+
.withFields(
13+
"@action",
14+
"ident",
15+
"microfrontend_id"
16+
)
17+
.withOptionalFields("@initiated_by")
18+
19+
20+
override suspend fun receive(jsonMessage: JsonMessage) {
21+
microfrontendRepository.insertMicrofrontend(
22+
action = jsonMessage["@action"].asText(),
23+
microfrontendId = jsonMessage["microfrontend_id"].asText(),
24+
ident = jsonMessage["ident"].asText(),
25+
initiatedBy = jsonMessage.getOrNull("@initiated_by")?.textValue()
26+
)
27+
}
28+
}

src/main/kotlin/no/nav/tms/statistikk/utkast/UtkastCreatedSink.kt

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)