🗃️ 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
import no.nav.helse.sprik.modell.Feilmelding
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.transactions.transaction
import java.time.LocalDateTime
class FeilmeldingRepository {
fun lagre(tittel: String, beskrivelse: String, dato: LocalDateTime){
fun lagre(feilmelding: Feilmelding){
transaction {
FeilmeldingTable.run {
insert {
it[FeilmeldingTable.tittel] = tittel
it[FeilmeldingTable.beskrivelse] = beskrivelse
it[FeilmeldingTable.dato] = dato
it[FeilmeldingTable.tittel] = feilmelding.tittel
it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse
it[FeilmeldingTable.dato] = feilmelding.dato
}
}
}
}
}

View file

@ -1,14 +1,12 @@
@file:UseSerializers(
LocalDateSerializer::class
LocalDateTimeSerializer::class
)
package no.nav.helse.sprik.modell
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import no.nav.helse.sprik.serializers.LocalDateSerializer
import java.time.LocalDate
import no.nav.helse.sprik.serializers.LocalDateTimeSerializer
import java.time.LocalDateTime
/**
@ -19,19 +17,11 @@ class Feilmelding(
val tittel: String,
val beskrivelse: String,
@Serializable(LocalDateSerializer::class)
val dato: LocalDate? = null, //Krever en spesiallaget serialiserer i KotlinX
val tags: ArrayList<String> = arrayListOf<String>()
@Serializable(LocalDateTimeSerializer::class)
val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX
//val tags: ArrayList<String> = arrayListOf<String>()
//val bilde: String,
) {
fun addTag(tagText: String){
tags.add(tagText)
}
fun removeTag(tagText: String){
tags.removeAt(tags.indexOf(tagText))
}
override fun toString(): String {
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.request.*
import no.nav.helse.sprik.Test
import no.nav.helse.sprik.db.FeilmeldingRepository
import no.nav.helse.sprik.modell.Feilmelding
fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment {
//Repositories for handlinger mot database:
val feilmeldingRepository = FeilmeldingRepository()
module {
install(CORS) {
anyHost()
@ -45,9 +49,9 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
call.respond(status = HttpStatusCode.Created, message = test)
}
post("/nyFeil") {
val test = call.receive<Feilmelding>()
println(test)
call.respond(status = HttpStatusCode.Created, message = test)
val feilmelding = call.receive<Feilmelding>()
feilmeldingRepository.lagre(feilmelding)
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.FeilmeldingRepository
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.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
@ -21,6 +22,7 @@ import org.jetbrains.exposed.sql.Database as ExposedDatabase
class FeilmeldingTest {
private val database = Database(dbconfig()).configureFlyway()
private val feilmeldingRepository = FeilmeldingRepository()
private val feilmelding = Feilmelding("Test", "Testesen", LocalDateTime.of(2023,1,1,8,0))
@BeforeAll
fun setup() {
@ -34,7 +36,7 @@ class FeilmeldingTest {
}
@Test
fun `Sett opp testdatabasen riktig`(){
feilmeldingRepository.lagre("Hællæ", "skjera bagera", LocalDateTime.of(2023,1,1,8,0))
feilmeldingRepository.lagre(feilmelding)
transaction {
assertEquals(1, FeilmeldingTable.selectAll().map {
it
@ -44,13 +46,12 @@ class FeilmeldingTest {
@Test
fun `Lagrer feilmelding i databasen`() {
feilmeldingRepository.lagre("test", "testesen", LocalDateTime.of(2023,1,1,8,0))
feilmeldingRepository.lagre(feilmelding)
transaction {
val actual = FeilmeldingTable.selectAll().single()
assertEquals("test", actual[FeilmeldingTable.tittel])
assertEquals("testesen", actual[FeilmeldingTable.beskrivelse])
assertEquals("Test", actual[FeilmeldingTable.tittel])
assertEquals("Testesen", actual[FeilmeldingTable.beskrivelse])
assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato])
}
}
}