Skip to content

Commit

Permalink
Sett opp litt mer veldefinert struktur for routes med tilhørende requ…
Browse files Browse the repository at this point in the history
…est/response klasser (#103)

* setup request types for all egenregistrering classes

* Sett opp litt mer veldefinert struktur for routes, request og response klasser

* move tests to reflect their "parent" classes position
  • Loading branch information
anderssonw authored Oct 2, 2024
1 parent 0efdd0f commit a24c442
Show file tree
Hide file tree
Showing 11 changed files with 201 additions and 151 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.v1
package no.kartverket.matrikkel.bygning.v1.bygning

import assertk.all
import assertk.assertThat
Expand All @@ -10,7 +10,7 @@ import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.server.testing.*
import no.kartverket.matrikkel.bygning.TestApplicationWithDb
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BygningResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.BygningResponse
import org.junit.jupiter.api.Test

class BygningRouteTest : TestApplicationWithDb() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.v1
package no.kartverket.matrikkel.bygning.v1.egenregistrering

import assertk.Assert
import assertk.all
Expand All @@ -17,29 +17,29 @@ import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.server.testing.*
import no.kartverket.matrikkel.bygning.TestApplicationWithDb
import no.kartverket.matrikkel.bygning.models.AvlopRegistrering
import no.kartverket.matrikkel.bygning.models.BruksarealRegistrering
import no.kartverket.matrikkel.bygning.models.ByggeaarRegistrering
import no.kartverket.matrikkel.bygning.models.EnergikildeRegistrering
import no.kartverket.matrikkel.bygning.models.OppvarmingRegistrering
import no.kartverket.matrikkel.bygning.models.VannforsyningRegistrering
import no.kartverket.matrikkel.bygning.models.kodelister.AvlopKode
import no.kartverket.matrikkel.bygning.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.models.kodelister.OppvarmingKode
import no.kartverket.matrikkel.bygning.models.kodelister.VannforsyningKode
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.BruksenhetRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.BygningRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.EgenregistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.AvlopKodeResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BruksarealResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BruksenhetResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.ByggeaarResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BygningResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.EnergikildeResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.MultikildeResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.OppvarmingResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.RegisterMetadataResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.VannforsyningKodeResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.AvlopKodeResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.BruksarealResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.BruksenhetResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.ByggeaarResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.BygningResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.EnergikildeResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.MultikildeResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.OppvarmingResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.RegisterMetadataResponse
import no.kartverket.matrikkel.bygning.routes.v1.bygning.VannforsyningKodeResponse
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.AvlopRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BruksarealRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BruksenhetRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.ByggeaarRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BygningRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.EgenregistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.EnergikildeRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.OppvarmingRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.VannforsyningRegistreringRequest
import org.junit.jupiter.api.Test
import java.time.Instant

Expand Down Expand Up @@ -230,15 +230,15 @@ class EgenregistreringRouteTest : TestApplicationWithDb() {
setBody(
EgenregistreringRequest.validEgenregistrering().copy(
bygningRegistrering = BygningRegistreringRequest(
bruksarealRegistrering = BruksarealRegistrering(bruksareal = 120.0),
byggeaarRegistrering = ByggeaarRegistrering(byggeaar = 2008),
bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 120.0),
byggeaarRegistrering = ByggeaarRegistreringRequest(byggeaar = 2008),
vannforsyningRegistrering = null,
avlopRegistrering = null,
),
bruksenhetRegistreringer = listOf(
BruksenhetRegistreringRequest(
bruksenhetId = 1L,
bruksarealRegistrering = BruksarealRegistrering(bruksareal = 40.0),
bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 40.0),
energikildeRegistrering = null,
oppvarmingRegistrering = null,
),
Expand Down Expand Up @@ -278,23 +278,23 @@ class EgenregistreringRouteTest : TestApplicationWithDb() {
private fun EgenregistreringRequest.Companion.validEgenregistrering() = EgenregistreringRequest(
bygningId = 1L,
bygningRegistrering = BygningRegistreringRequest(
bruksarealRegistrering = BruksarealRegistrering(125.0),
byggeaarRegistrering = ByggeaarRegistrering(2010),
vannforsyningRegistrering = VannforsyningRegistrering(
bruksarealRegistrering = BruksarealRegistreringRequest(125.0),
byggeaarRegistrering = ByggeaarRegistreringRequest(2010),
vannforsyningRegistrering = VannforsyningRegistreringRequest(
VannforsyningKode.OffentligVannverk,
),
avlopRegistrering = AvlopRegistrering(
avlopRegistrering = AvlopRegistreringRequest(
avlop = AvlopKode.OffentligKloakk,
),
),
bruksenhetRegistreringer = listOf(
BruksenhetRegistreringRequest(
bruksenhetId = 1L,
bruksarealRegistrering = BruksarealRegistrering(bruksareal = 100.0),
energikildeRegistrering = EnergikildeRegistrering(
bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 100.0),
energikildeRegistrering = EnergikildeRegistreringRequest(
listOf(EnergikildeKode.Elektrisitet),
),
oppvarmingRegistrering = OppvarmingRegistrering(
oppvarmingRegistrering = OppvarmingRegistreringRequest(
listOf(OppvarmingKode.Elektrisk),
),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import no.kartverket.matrikkel.bygning.plugins.configureStatusPages
import no.kartverket.matrikkel.bygning.repositories.EgenregistreringRepository
import no.kartverket.matrikkel.bygning.repositories.HealthRepository
import no.kartverket.matrikkel.bygning.routes.internalRouting
import no.kartverket.matrikkel.bygning.routes.v1.bygningRouting
import no.kartverket.matrikkel.bygning.routes.v1.egenregistreringRouting
import no.kartverket.matrikkel.bygning.routes.v1.kodelisteRouting
import no.kartverket.matrikkel.bygning.routes.v1.bygning.bygningRouting
import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.egenregistreringRouting
import no.kartverket.matrikkel.bygning.routes.v1.kodeliste.kodelisteRouting
import no.kartverket.matrikkel.bygning.services.BygningService
import no.kartverket.matrikkel.bygning.services.EgenregistreringService
import no.kartverket.matrikkel.bygning.services.HealthService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
package no.kartverket.matrikkel.bygning.models.kodelister

import kotlinx.serialization.Serializable
import kotlin.reflect.KClass

// Kan det finnes flere presentasjonsnavn på én kode? For eksempel per ett på bokmål og ett på nynorsk?
interface IKode {
val presentasjonsnavn: String
val beskrivelse: String
}

@Serializable
data class Kode(
val kode: String,
val presentasjonsnavn: String,
val beskrivelse: String
)

@Serializable
enum class VannforsyningKode(
override val presentasjonsnavn: String,
override val beskrivelse: String
Expand All @@ -36,7 +25,6 @@ enum class VannforsyningKode(
)
}

@Serializable
enum class AvlopKode(
override val presentasjonsnavn: String,
override val beskrivelse: String
Expand All @@ -46,7 +34,6 @@ enum class AvlopKode(
IngenKloakk("Ingen kloakk", "Ingen tilknytning til kloakk")
}

@Serializable
enum class EnergikildeKode(
override val presentasjonsnavn: String,
override val beskrivelse: String
Expand All @@ -64,7 +51,6 @@ enum class EnergikildeKode(
Varmepumpe("Varmepumpe", "Energikildekode for varmepumpe"),
}

@Serializable
enum class OppvarmingKode(
override val presentasjonsnavn: String,
override val beskrivelse: String
Expand All @@ -73,25 +59,3 @@ enum class OppvarmingKode(
Sentralvarme("Sentralvarme", "Sentralvarme"),
AnnenOppvarming("Annen oppvarming", "Annen oppvarming")
}

@Serializable
data class KodelisterResponse(
val vannforsyningKoder: List<Kode>,
val avlopKoder: List<Kode>,
val energikildeKoder: List<Kode>,
val oppvarmingKoder: List<Kode>,
)

/*
* Enums i Kotlin returnerer kun name parameteret ved bruk av EnumClass.entries(). Denne extension functionen er til for å kunne returnere
* alle relevante parametere
*/
inline fun <reified T> KClass<T>.toKodeList(): List<Kode> where T : Enum<T>, T : IKode {
return enumValues<T>().map {
Kode(
kode = it.name,
presentasjonsnavn = it.presentasjonsnavn,
beskrivelse = it.beskrivelse,
)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.routes.v1.dto.response
package no.kartverket.matrikkel.bygning.routes.v1.bygning

import kotlinx.serialization.Serializable
import no.kartverket.matrikkel.bygning.models.Avlop
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package no.kartverket.matrikkel.bygning.routes.v1
package no.kartverket.matrikkel.bygning.routes.v1.bygning

import io.bkbn.kompendium.core.metadata.GetInfo
import io.bkbn.kompendium.core.plugin.NotarizedRoute
import io.bkbn.kompendium.core.plugin.NotarizedRoute.invoke
import io.bkbn.kompendium.json.schema.definition.TypeDefinition
import io.bkbn.kompendium.oas.payload.Parameter
import io.ktor.http.*
Expand All @@ -12,10 +13,6 @@ import io.ktor.server.util.*
import no.kartverket.matrikkel.bygning.models.Result.ErrorResult
import no.kartverket.matrikkel.bygning.models.Result.Success
import no.kartverket.matrikkel.bygning.models.responses.ErrorResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BruksenhetResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.BygningResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.toBruksenhetResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.response.toBygningResponse
import no.kartverket.matrikkel.bygning.services.BygningService

fun Route.bygningRouting(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package no.kartverket.matrikkel.bygning.routes.v1
package no.kartverket.matrikkel.bygning.routes.v1.egenregistrering

import io.bkbn.kompendium.core.metadata.PostInfo
import io.bkbn.kompendium.core.plugin.NotarizedRoute
import io.bkbn.kompendium.core.plugin.NotarizedRoute.invoke
import io.ktor.http.*
import io.ktor.server.application.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import no.kartverket.matrikkel.bygning.models.BruksarealRegistrering
import no.kartverket.matrikkel.bygning.models.EnergikildeRegistrering
import no.kartverket.matrikkel.bygning.models.Result.ErrorResult
import no.kartverket.matrikkel.bygning.models.Result.Success
import no.kartverket.matrikkel.bygning.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.models.responses.ErrorResponse
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.BruksenhetRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.BygningRegistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.EgenregistreringRequest
import no.kartverket.matrikkel.bygning.routes.v1.dto.request.toEgenregistrering
import no.kartverket.matrikkel.bygning.services.EgenregistreringService

fun Route.egenregistreringRouting(egenregistreringService: EgenregistreringService) {
Expand Down Expand Up @@ -53,7 +48,7 @@ private fun Route.egenregistreringDoc() {
"Bygning Id 1" to EgenregistreringRequest(
bygningId = 1,
bygningRegistrering = BygningRegistreringRequest(
bruksarealRegistrering = BruksarealRegistrering(
bruksarealRegistrering = BruksarealRegistreringRequest(
bruksareal = 125.0,
),
null,
Expand All @@ -64,7 +59,7 @@ private fun Route.egenregistreringDoc() {
BruksenhetRegistreringRequest(
bruksenhetId = 1L,
null,
energikildeRegistrering = EnergikildeRegistrering(
energikildeRegistrering = EnergikildeRegistreringRequest(
energikilder = listOf(EnergikildeKode.Elektrisitet, EnergikildeKode.Gass),
),
null,
Expand Down
Loading

0 comments on commit a24c442

Please sign in to comment.