Skip to content

Commit

Permalink
🧑‍💻 Innføre full støtte for UUID i graphql-kode
Browse files Browse the repository at this point in the history
  • Loading branch information
havstein committed Apr 2, 2024
1 parent e3c0b1b commit da15359
Show file tree
Hide file tree
Showing 30 changed files with 217 additions and 143 deletions.
3 changes: 3 additions & 0 deletions spesialist-api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.expediagroup.graphql.plugin.gradle.config.GraphQLScalar
import com.expediagroup.graphql.plugin.gradle.tasks.GraphQLIntrospectSchemaTask

val testcontainersVersion = "1.19.6"
Expand All @@ -23,6 +24,8 @@ graphql {
client {
// hvis endpoint settes her vil spleis introspectes hver gang man bygger
schemaFile = file("$graphqlDir/schema.graphql")
// Ved å sette opp UUID her vil koden som genereres for spleis-typene bruke UUID
customScalars = listOf(GraphQLScalar("UUID", "java.util.UUID", "no.nav.helse.spesialist.api.graphql.schema.UUIDScalarConverter"))
queryFileDirectory = graphqlDir
packageName = "no.nav.helse.spleis.graphql"
serializer = com.expediagroup.graphql.plugin.gradle.config.GraphQLSerializer.JACKSON
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ internal class SchemaBuilder(
supportedPackages = listOf(
"no.nav.helse.spesialist.api.graphql",
"no.nav.helse.spleis.graphql",
)
),
hooks = schemaGeneratorHooks
)
return toSchema(
config = schemaConfig,
Expand Down Expand Up @@ -129,7 +130,11 @@ internal class SchemaBuilder(
)
),
TopLevelObject(
DokumentQuery(personApiDao = personApiDao, egenAnsattApiDao = egenAnsattApiDao, dokumenthåndterer = dokumenthåndterer)
DokumentQuery(
personApiDao = personApiDao,
egenAnsattApiDao = egenAnsattApiDao,
dokumenthåndterer = dokumenthåndterer
)
),
),
mutations = listOf(
Expand Down Expand Up @@ -178,7 +183,9 @@ internal class SchemaBuilder(
),
TopLevelObject(
PaVentMutation(
saksbehandlerhåndterer = saksbehandlerhåndterer, notatMediator = notatMediator, periodehistorikkDao = periodehistorikkDao
saksbehandlerhåndterer = saksbehandlerhåndterer,
notatMediator = notatMediator,
periodehistorikkDao = periodehistorikkDao
)
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package no.nav.helse.spesialist.api.graphql

import com.expediagroup.graphql.generator.hooks.SchemaGeneratorHooks
import graphql.GraphQLContext
import graphql.execution.CoercedVariables
import graphql.language.Value
import graphql.schema.Coercing
import graphql.schema.GraphQLScalarType
import graphql.schema.GraphQLType
import java.util.Locale
import java.util.UUID
import kotlin.reflect.KClass
import kotlin.reflect.KType

/**
* Støttekode for å kunne bruke UUID som type, i stedet for å måtte ha den som String.
*/
internal val schemaGeneratorHooks = object : SchemaGeneratorHooks {
override fun willGenerateGraphQLType(type: KType): GraphQLType? = when (type.classifier as? KClass<*>) {
UUID::class -> graphQLUUID
else -> null
}
}

private val graphQLUUID: GraphQLScalarType = GraphQLScalarType.newScalar()
.name(UUID::class.simpleName)
.description(UUID::class.toString())
.coercing(UuidCoercing)
.build()

private object UuidCoercing : Coercing<UUID, String> {

override fun serialize(dataFetcherResult: Any, graphQLContext: GraphQLContext, locale: Locale) =
dataFetcherResult.toString()

override fun parseValue(input: Any, graphQLContext: GraphQLContext, locale: Locale): UUID =
UUID.fromString(serialize(input, graphQLContext, locale))

override fun parseLiteral(
input: Value<*>,
variables: CoercedVariables,
graphQLContext: GraphQLContext,
locale: Locale,
): UUID =
UUID.fromString(serialize(input, graphQLContext, locale))
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class PaVentMutation(
PaVent(
frist = frist,
begrunnelse = begrunnelse,
oid = saksbehandler.oid.toString()
oid = saksbehandler.oid
)
).build()
} catch (e: OppgaveIkkeTildelt) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TildelingMutation(
try {
saksbehandlerhåndterer.håndter(TildelOppgave(oppgaveId.toLong()), saksbehandler)
newResult<Tildeling?>().data(
Tildeling(saksbehandler.navn, saksbehandler.epost, saksbehandler.oid.toString())
Tildeling(saksbehandler.navn, saksbehandler.epost, saksbehandler.oid)
).build()
} catch (e: OppgaveTildeltNoenAndre) {
newResult<Tildeling?>().error(alleredeTildeltError(e)).build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class NotatQuery(private val notatDao: NotatDao) : Query {
private fun Map<UUID, List<NotatDto>>.tilNotater(): List<Notater> =
toList().map { (id, notater) ->
Notater(
id = id.toString(),
id = id,
notater = notater.map(::tilNotat)
)
}
Expand All @@ -63,11 +63,11 @@ internal fun tilNotat(notat: NotatDto) = Notat(
id = notat.id,
tekst = notat.tekst,
opprettet = notat.opprettet.format(DateTimeFormatter.ISO_DATE_TIME),
saksbehandlerOid = notat.saksbehandlerOid.toString(),
saksbehandlerOid = notat.saksbehandlerOid,
saksbehandlerNavn = notat.saksbehandlerNavn,
saksbehandlerEpost = notat.saksbehandlerEpost,
saksbehandlerIdent = notat.saksbehandlerIdent,
vedtaksperiodeId = notat.vedtaksperiodeId.toString(),
vedtaksperiodeId = notat.vedtaksperiodeId,
feilregistrert = notat.feilregistrert,
feilregistrert_tidspunkt = notat.feilregistrert_tidspunkt?.format(DateTimeFormatter.ISO_DATE_TIME),
type = notat.type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ data class Arbeidsforhold(
)

data class Generasjon(
val id: UUIDString,
val id: UUID,
val perioder: List<Periode>,
)

Expand All @@ -43,14 +43,14 @@ data class ArbeidsgiverInntekterFraAOrdningen(
)

interface Overstyring {
val hendelseId: UUIDString
val hendelseId: UUID
val timestamp: DateTimeString
val saksbehandler: Saksbehandler
val ferdigstilt: Boolean
}

data class Dagoverstyring(
override val hendelseId: UUIDString,
override val hendelseId: UUID,
override val timestamp: DateTimeString,
override val saksbehandler: Saksbehandler,
override val ferdigstilt: Boolean,
Expand All @@ -67,7 +67,7 @@ data class Dagoverstyring(
}

data class Inntektoverstyring(
override val hendelseId: UUIDString,
override val hendelseId: UUID,
override val timestamp: DateTimeString,
override val saksbehandler: Saksbehandler,
override val ferdigstilt: Boolean,
Expand All @@ -91,7 +91,7 @@ data class Inntektoverstyring(
}

data class Sykepengegrunnlagskjonnsfastsetting(
override val hendelseId: UUIDString,
override val hendelseId: UUID,
override val timestamp: DateTimeString,
override val saksbehandler: Saksbehandler,
override val ferdigstilt: Boolean,
Expand All @@ -111,7 +111,7 @@ data class Sykepengegrunnlagskjonnsfastsetting(
}

data class Arbeidsforholdoverstyring(
override val hendelseId: UUIDString,
override val hendelseId: UUID,
override val timestamp: DateTimeString,
override val saksbehandler: Saksbehandler,
override val ferdigstilt: Boolean,
Expand All @@ -125,7 +125,7 @@ data class GhostPeriode(
val fom: DateString,
val tom: DateString,
val skjaeringstidspunkt: DateString,
val vilkarsgrunnlagId: UUIDString?,
val vilkarsgrunnlagId: UUID?,
val deaktivert: Boolean,
val organisasjonsnummer: String,
) {
Expand Down Expand Up @@ -161,7 +161,7 @@ data class Arbeidsgiver(
is GraphQLUberegnetPeriode -> UberegnetPeriode(
varselRepository = varselRepository,
periode = it,
skalViseAktiveVarsler = index == 0 && perioderSomSkalViseAktiveVarsler.contains(UUID.fromString(it.vedtaksperiodeId)),
skalViseAktiveVarsler = index == 0 && perioderSomSkalViseAktiveVarsler.contains(it.vedtaksperiodeId),
notatDao = notatDao,
index = index,
)
Expand All @@ -188,7 +188,7 @@ data class Arbeidsgiver(
periode = it,
// Antakelse om at hvis det ikke finnes oppgave er det en periode som skal skjønnsfastsettes. Da vil vi vise varsler.
// Dette kans fjernes når skjønnsfastsettingperioder også har oppgave.
skalViseAktiveVarsler = if (oppgaveId == null) true else index == 0 && perioderSomSkalViseAktiveVarsler.contains(UUID.fromString(it.vedtaksperiodeId)),
skalViseAktiveVarsler = if (oppgaveId == null) true else index == 0 && perioderSomSkalViseAktiveVarsler.contains(it.vedtaksperiodeId),
notatDao = notatDao,
index = index,
)
Expand Down Expand Up @@ -223,7 +223,7 @@ data class Arbeidsgiver(
}

private fun OverstyringTidslinjeDto.tilDagoverstyring() = Dagoverstyring(
hendelseId = hendelseId.toString(),
hendelseId = hendelseId,
begrunnelse = begrunnelse,
timestamp = timestamp.format(DateTimeFormatter.ISO_DATE_TIME),
saksbehandler = Saksbehandler(
Expand All @@ -243,7 +243,7 @@ private fun OverstyringTidslinjeDto.tilDagoverstyring() = Dagoverstyring(
)

private fun OverstyringInntektDto.tilInntektoverstyring() = Inntektoverstyring(
hendelseId = hendelseId.toString(),
hendelseId = hendelseId,
timestamp = timestamp.format(DateTimeFormatter.ISO_DATE_TIME),
saksbehandler = Saksbehandler(
navn = saksbehandlerNavn,
Expand Down Expand Up @@ -274,7 +274,7 @@ private fun OverstyringInntektDto.tilInntektoverstyring() = Inntektoverstyring(
)

private fun OverstyringArbeidsforholdDto.tilArbeidsforholdoverstyring() = Arbeidsforholdoverstyring(
hendelseId = hendelseId.toString(),
hendelseId = hendelseId,
begrunnelse = begrunnelse,
timestamp = timestamp.format(DateTimeFormatter.ISO_DATE_TIME),
saksbehandler = Saksbehandler(
Expand All @@ -288,7 +288,7 @@ private fun OverstyringArbeidsforholdDto.tilArbeidsforholdoverstyring() = Arbeid
)

private fun SkjønnsfastsettingSykepengegrunnlagDto.tilSykepengegrunnlagSkjønnsfastsetting() = Sykepengegrunnlagskjonnsfastsetting(
hendelseId = hendelseId.toString(),
hendelseId = hendelseId,
timestamp = timestamp.format(DateTimeFormatter.ISO_DATE_TIME),
saksbehandler = Saksbehandler(
navn = saksbehandlerNavn,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.helse.spesialist.api.graphql.schema

import java.util.UUID
import no.nav.helse.spleis.graphql.enums.GraphQLBegrunnelse
import no.nav.helse.spleis.graphql.enums.GraphQLSykdomsdagkildetype
import no.nav.helse.spleis.graphql.enums.GraphQLSykdomsdagtype
Expand Down Expand Up @@ -66,7 +67,7 @@ enum class Begrunnelse {
}

data class Kilde(
val id: UUIDString,
val id: UUID,
val type: Kildetype
)

Expand Down
Loading

0 comments on commit da15359

Please sign in to comment.