diff --git a/spesialist-felles/src/main/kotlin/no/nav/helse/HelseDao.kt b/spesialist-felles/src/main/kotlin/no/nav/helse/HelseDao.kt index f9f85091d..7bfec1c29 100644 --- a/spesialist-felles/src/main/kotlin/no/nav/helse/HelseDao.kt +++ b/spesialist-felles/src/main/kotlin/no/nav/helse/HelseDao.kt @@ -17,7 +17,7 @@ abstract class HelseDao(private val dataSource: DataSource) { ) = queryOf(sql, params.toMap()) // Plis bare bruk denne til ting det ikke går an å gjøre med navngitte parametere - eks. ".. AND orgnummer = ANY(?)" - fun asSQLForQuestionMarks( + fun asSQLWithQuestionMarks( @Language("SQL") sql: String, vararg params: Any?, ) = queryOf(sql, *params) @@ -45,22 +45,21 @@ abstract class HelseDao(private val dataSource: DataSource) { vararg params: Any?, ) = queryOf(sql, *params) - fun Query.single(mapping: (Row) -> T?) = - sessionOf(dataSource, strict = true).use { session -> session.run(this.map { mapping(it) }.asSingle) } + fun Query.single(mapping: (Row) -> T?) = sessionOf(dataSource, strict = true).use { single(it, mapping) } fun Query.single( session: TransactionalSession, mapping: (Row) -> T?, - ) = session.run(this.map { mapping(it) }.asSingle) + ) = with(Companion) { single(session, mapping) } - fun Query.list(mapping: (Row) -> T?) = sessionOf(dataSource).use { session -> session.run(this.map { mapping(it) }.asList) } + fun Query.list(mapping: (Row) -> T?) = sessionOf(dataSource).use { list(it, mapping) } fun Query.list( session: TransactionalSession, mapping: (Row) -> T?, - ) = session.run(this.map { mapping(it) }.asList) + ) = with(Companion) { list(session, mapping) } - fun Query.update() = sessionOf(dataSource).use { session -> session.run(this.asUpdate) } + fun Query.update() = sessionOf(dataSource).use { update(it) } fun Query.updateAndReturnGeneratedKey() = sessionOf( diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/AnnulleringDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/AnnulleringDao.kt index f03662461..c58d1fcb9 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/AnnulleringDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/AnnulleringDao.kt @@ -77,3 +77,5 @@ class AnnulleringDao( return finnAnnullering(annulleringDto.arbeidsgiverFagsystemId, annulleringDto.personFagsystemId) } } + +fun Iterable.somDbArray() = joinToString(prefix = "{", postfix = "}") diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/StansAutomatiskBehandlingDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/StansAutomatiskBehandlingDao.kt index 065ea35ce..4fb6f28d7 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/StansAutomatiskBehandlingDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/StansAutomatiskBehandlingDao.kt @@ -40,5 +40,3 @@ class StansAutomatiskBehandlingDao(private val dataSource: DataSource) : TransactionalStansAutomatiskBehandlingDao(session).hentFor(fødselsnummer) } } - -fun Iterable.somDbArray() = joinToString(prefix = "{", postfix = "}") diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalInntektskilderDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalInntektskilderDao.kt index 9aa838a97..e3e6b2cfa 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalInntektskilderDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalInntektskilderDao.kt @@ -1,7 +1,7 @@ package no.nav.helse.db import kotliquery.Session -import no.nav.helse.HelseDao.Companion.asSQLForQuestionMarks +import no.nav.helse.HelseDao.Companion.asSQLWithQuestionMarks import no.nav.helse.HelseDao.Companion.list import no.nav.helse.modell.InntektskildeDto import no.nav.helse.modell.InntektskildetypeDto @@ -48,7 +48,7 @@ internal class TransactionalInntektskilderDao( private fun eksisterendeInntektskilder(organisasjonsnumre: List): List { if (organisasjonsnumre.isEmpty()) return emptyList() - return asSQLForQuestionMarks( + return asSQLWithQuestionMarks( """ SELECT orgnummer, navn, bransjer, an.navn_oppdatert FROM arbeidsgiver ag INNER JOIN arbeidsgiver_navn an on an.id = ag.navn_ref diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalOverstyringDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalOverstyringDao.kt index 00231ce61..0088f143d 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalOverstyringDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalOverstyringDao.kt @@ -3,7 +3,7 @@ package no.nav.helse.db import kotliquery.Session import kotliquery.queryOf import no.nav.helse.HelseDao.Companion.asSQL -import no.nav.helse.HelseDao.Companion.asSQLForQuestionMarks +import no.nav.helse.HelseDao.Companion.asSQLWithQuestionMarks import no.nav.helse.HelseDao.Companion.list import no.nav.helse.spesialist.api.overstyring.OverstyringType import org.intellij.lang.annotations.Language @@ -13,7 +13,7 @@ class TransactionalOverstyringDao( private val session: Session, ) : OverstyringRepository { override fun finnOverstyringerMedTypeForVedtaksperioder(vedtaksperiodeIder: List) = - asSQLForQuestionMarks( + asSQLWithQuestionMarks( """ SELECT DISTINCT o.id, CASE @@ -29,10 +29,10 @@ class TransactionalOverstyringDao( LEFT JOIN overstyring_tidslinje ot on o.id = ot.overstyring_ref LEFT JOIN skjonnsfastsetting_sykepengegrunnlag ss on o.id = ss.overstyring_ref LEFT JOIN overstyring_minimum_sykdomsgrad oms on o.id = oms.overstyring_ref - WHERE o.vedtaksperiode_id IN (${vedtaksperiodeIder.joinToString { "?" }}) + WHERE o.vedtaksperiode_id = ANY (?) AND o.ferdigstilt = false """.trimIndent(), - *vedtaksperiodeIder.toTypedArray(), + vedtaksperiodeIder.toTypedArray(), ).list(session) { OverstyringType.valueOf(it.string("type")) } override fun finnOverstyringerMedTypeForVedtaksperiode(vedtaksperiodeId: UUID): List { diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalStansAutomatiskBehandlingDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalStansAutomatiskBehandlingDao.kt index c2f919ef4..c6d4114d1 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalStansAutomatiskBehandlingDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalStansAutomatiskBehandlingDao.kt @@ -41,7 +41,7 @@ class TransactionalStansAutomatiskBehandlingDao(private val session: Session) : val statement = """ insert into stans_automatisering (fødselsnummer, status, årsaker, opprettet, kilde, original_melding) - values (:fnr, :status, :arsaker::varchar[], :opprettet, :kilde, cast(:originalMelding as json)) + values (:fnr, :status, :arsaker, :opprettet, :kilde, cast(:originalMelding as json)) """.trimIndent() session.run( queryOf( @@ -49,7 +49,7 @@ class TransactionalStansAutomatiskBehandlingDao(private val session: Session) : mapOf( "fnr" to fødselsnummer, "status" to status, - "arsaker" to årsaker.map(StoppknappÅrsak::name).somDbArray(), + "arsaker" to session.createArrayOf("varchar", årsaker.map(StoppknappÅrsak::name)), "opprettet" to opprettet, "kilde" to kilde, "originalMelding" to originalMelding,