🗃️ 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:
parent
a5497cf536
commit
c47685b5d9
6 changed files with 34 additions and 36 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -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)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
|
||||||
)
|
|
|
@ -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
|
||||||
|
)
|
|
@ -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])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in a new issue