🗃️ Innsendt feilmelding sendes videre fra backend til database

Co-authored-by: Sindre Kjelsrud <sindre.kjelsrud@nav.no>
Co-authored-by: Amalie Mansåker <amalie.erdal.mansaker@nav.no>
This commit is contained in:
Markus Johansen 2023-07-17 16:11:35 +02:00
parent a5497cf536
commit c47685b5d9
6 changed files with 34 additions and 36 deletions

View file

@ -1,19 +1,22 @@
package no.nav.helse.sprik.db package no.nav.helse.sprik.db
import no.nav.helse.sprik.modell.Feilmelding
import org.jetbrains.exposed.sql.insert import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
import java.time.LocalDateTime import java.time.LocalDateTime
class FeilmeldingRepository { class FeilmeldingRepository {
fun lagre(tittel: String, beskrivelse: String, dato: LocalDateTime){ fun lagre(feilmelding: Feilmelding){
transaction { transaction {
FeilmeldingTable.run { FeilmeldingTable.run {
insert { insert {
it[FeilmeldingTable.tittel] = tittel it[FeilmeldingTable.tittel] = feilmelding.tittel
it[FeilmeldingTable.beskrivelse] = beskrivelse it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse
it[FeilmeldingTable.dato] = dato it[FeilmeldingTable.dato] = feilmelding.dato
} }
} }
} }
} }
} }

View file

@ -1,14 +1,12 @@
@file:UseSerializers( @file:UseSerializers(
LocalDateSerializer::class LocalDateTimeSerializer::class
) )
package no.nav.helse.sprik.modell package no.nav.helse.sprik.modell
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers import kotlinx.serialization.UseSerializers
import no.nav.helse.sprik.serializers.LocalDateSerializer import no.nav.helse.sprik.serializers.LocalDateTimeSerializer
import java.time.LocalDate import java.time.LocalDateTime
/** /**
@ -19,19 +17,11 @@ class Feilmelding(
val tittel: String, val tittel: String,
val beskrivelse: String, val beskrivelse: String,
@Serializable(LocalDateSerializer::class) @Serializable(LocalDateTimeSerializer::class)
val dato: LocalDate? = null, //Krever en spesiallaget serialiserer i KotlinX val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX
val tags: ArrayList<String> = arrayListOf<String>() //val tags: ArrayList<String> = arrayListOf<String>()
//val bilde: String, //val bilde: String,
) { ) {
fun addTag(tagText: String){
tags.add(tagText)
}
fun removeTag(tagText: String){
tags.removeAt(tags.indexOf(tagText))
}
override fun toString(): String { override fun toString(): String {
return "Feilmelding(\n${tittel}\n${beskrivelse}\n)" return "Feilmelding(\n${tittel}\n${beskrivelse}\n)"
} }

View file

@ -12,9 +12,13 @@ import io.ktor.server.http.content.*
import io.ktor.server.plugins.cors.routing.* import io.ktor.server.plugins.cors.routing.*
import io.ktor.server.request.* import io.ktor.server.request.*
import no.nav.helse.sprik.Test import no.nav.helse.sprik.Test
import no.nav.helse.sprik.db.FeilmeldingRepository
import no.nav.helse.sprik.modell.Feilmelding import no.nav.helse.sprik.modell.Feilmelding
fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment { fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment {
//Repositories for handlinger mot database:
val feilmeldingRepository = FeilmeldingRepository()
module { module {
install(CORS) { install(CORS) {
anyHost() anyHost()
@ -45,9 +49,9 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
call.respond(status = HttpStatusCode.Created, message = test) call.respond(status = HttpStatusCode.Created, message = test)
} }
post("/nyFeil") { post("/nyFeil") {
val test = call.receive<Feilmelding>() val feilmelding = call.receive<Feilmelding>()
println(test) feilmeldingRepository.lagre(feilmelding)
call.respond(status = HttpStatusCode.Created, message = test) call.respond(status = HttpStatusCode.Created, message = "Feilmelding motatt og sendt til database")
} }
} }
} }

View file

@ -1,8 +0,0 @@
package no.nav.helse.sprik.serializers
import java.time.LocalDate
object LocalDateSerializer : AsStringSerializer<LocalDate>(
serialName = "Sprik.kotlinx.LocalDateSerializer",
parse = LocalDate::parse
)

View file

@ -0,0 +1,8 @@
package no.nav.helse.sprik.serializers
import java.time.LocalDateTime
object LocalDateTimeSerializer : AsStringSerializer<LocalDateTime>(
serialName = "Sprik.kotlinx.LocalDateTimeSerializer",
parse = LocalDateTime::parse
)

View file

@ -4,6 +4,7 @@ import com.zaxxer.hikari.HikariConfig
import no.nav.helse.sprik.db.Database import no.nav.helse.sprik.db.Database
import no.nav.helse.sprik.db.FeilmeldingRepository import no.nav.helse.sprik.db.FeilmeldingRepository
import no.nav.helse.sprik.db.FeilmeldingTable import no.nav.helse.sprik.db.FeilmeldingTable
import no.nav.helse.sprik.modell.Feilmelding
import org.jetbrains.exposed.sql.deleteAll import org.jetbrains.exposed.sql.deleteAll
import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
@ -21,6 +22,7 @@ import org.jetbrains.exposed.sql.Database as ExposedDatabase
class FeilmeldingTest { class FeilmeldingTest {
private val database = Database(dbconfig()).configureFlyway() private val database = Database(dbconfig()).configureFlyway()
private val feilmeldingRepository = FeilmeldingRepository() private val feilmeldingRepository = FeilmeldingRepository()
private val feilmelding = Feilmelding("Test", "Testesen", LocalDateTime.of(2023,1,1,8,0))
@BeforeAll @BeforeAll
fun setup() { fun setup() {
@ -34,7 +36,7 @@ class FeilmeldingTest {
} }
@Test @Test
fun `Sett opp testdatabasen riktig`(){ fun `Sett opp testdatabasen riktig`(){
feilmeldingRepository.lagre("Hællæ", "skjera bagera", LocalDateTime.of(2023,1,1,8,0)) feilmeldingRepository.lagre(feilmelding)
transaction { transaction {
assertEquals(1, FeilmeldingTable.selectAll().map { assertEquals(1, FeilmeldingTable.selectAll().map {
it it
@ -44,13 +46,12 @@ class FeilmeldingTest {
@Test @Test
fun `Lagrer feilmelding i databasen`() { fun `Lagrer feilmelding i databasen`() {
feilmeldingRepository.lagre("test", "testesen", LocalDateTime.of(2023,1,1,8,0)) feilmeldingRepository.lagre(feilmelding)
transaction { transaction {
val actual = FeilmeldingTable.selectAll().single() val actual = FeilmeldingTable.selectAll().single()
assertEquals("test", actual[FeilmeldingTable.tittel]) assertEquals("Test", actual[FeilmeldingTable.tittel])
assertEquals("testesen", actual[FeilmeldingTable.beskrivelse]) assertEquals("Testesen", actual[FeilmeldingTable.beskrivelse])
assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato]) assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato])
} }
} }
} }