Skip to content

Commit

Permalink
♻️ Innfører QueryRunner i AbonnementDao
Browse files Browse the repository at this point in the history
Co-authored-by: Christian Skovborg Gule<[email protected]>
  • Loading branch information
oydisrefsum committed Oct 30, 2024
1 parent 375ea10 commit 354bb4a
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -1,55 +1,64 @@
package no.nav.helse.spesialist.api.abonnement

import kotliquery.sessionOf
import no.nav.helse.HelseDao
import no.nav.helse.HelseDao.Companion.asSQL
import no.nav.helse.db.MedDataSource
import no.nav.helse.db.QueryRunner
import java.util.UUID
import javax.sql.DataSource

class AbonnementDao(private val dataSource: DataSource) : HelseDao(dataSource) {
class AbonnementDao(dataSource: DataSource) : QueryRunner by MedDataSource(dataSource) {
fun opprettAbonnement(
saksbehandlerId: UUID,
aktørId: Long,
) = sessionOf(dataSource).use { session ->
session.transaction { transactionalSession ->
val abonnementQuery =
asSQL(
"""
delete from abonnement_for_opptegnelse where saksbehandler_id = :saksbehandlerId;
insert into abonnement_for_opptegnelse
select :saksbehandlerId, p.id
from person p
where p.aktor_id = :aktorId
""".trimIndent(),
"saksbehandlerId" to saksbehandlerId,
"aktorId" to aktørId,
)
transactionalSession.run(abonnementQuery.asUpdate)

val sekvensnummerQuery =
asSQL(
"""
insert into saksbehandler_opptegnelse_sekvensnummer
values (:saksbehandlerId, coalesce((select max(sekvensnummer) from opptegnelse), 0))
on conflict (saksbehandler_id) do update
set siste_sekvensnummer = (coalesce((select max(sekvensnummer) from opptegnelse), 0))
""".trimIndent(),
"saksbehandlerId" to saksbehandlerId,
"aktorId" to aktørId,
)
transactionalSession.run(sekvensnummerQuery.asUpdate)
}
) {
lagre(saksbehandlerId, aktørId)
upsertSekvensnummer(saksbehandlerId, aktørId)
}

fun registrerSistekvensnummer(
saksbehandlerIdent: UUID,
sisteSekvensId: Int,
) = asSQL(
"""
update saksbehandler_opptegnelse_sekvensnummer
set siste_sekvensnummer = :sisteSekvensId
where saksbehandler_id = :saksbehandlerId;
""".trimIndent(),
"sisteSekvensId" to sisteSekvensId,
"saksbehandlerId" to saksbehandlerIdent,
).update()
): Int =
asSQL(
"""
update saksbehandler_opptegnelse_sekvensnummer
set siste_sekvensnummer = :sisteSekvensId
where saksbehandler_id = :saksbehandlerId;
""".trimIndent(),
"sisteSekvensId" to sisteSekvensId,
"saksbehandlerId" to saksbehandlerIdent,
).update()

private fun upsertSekvensnummer(
saksbehandlerId: UUID,
aktørId: Long,
) {
asSQL(
"""
insert into saksbehandler_opptegnelse_sekvensnummer
values (:saksbehandlerId, coalesce((select max(sekvensnummer) from opptegnelse), 0))
on conflict (saksbehandler_id) do update
set siste_sekvensnummer = (coalesce((select max(sekvensnummer) from opptegnelse), 0))
""".trimIndent(),
"saksbehandlerId" to saksbehandlerId,
"aktorId" to aktørId,
).update()
}

private fun lagre(
saksbehandlerId: UUID,
aktørId: Long,
) {
asSQL(
"""
delete from abonnement_for_opptegnelse where saksbehandler_id = :saksbehandlerId;
insert into abonnement_for_opptegnelse
select :saksbehandlerId, p.id
from person p
where p.aktor_id = :aktorId
""".trimIndent(),
"saksbehandlerId" to saksbehandlerId,
"aktorId" to aktørId,
).update()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -991,11 +991,6 @@ internal abstract class DatabaseIntegrationTest : AbstractDatabaseTest() {
val epost: String,
)

protected fun query(
@Language("postgresql") query: String,
vararg params: Pair<String, Any>,
) = queryOf(query, params.toMap())

protected fun Query.update() = asUpdate.runInSession()

protected fun <T> Query.single(mapper: (Row) -> T?) = map(mapper).asSingle.runInSession()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.helse.spesialist.api.abonnement

import no.nav.helse.HelseDao.Companion.asSQL
import no.nav.helse.spesialist.api.DatabaseIntegrationTest
import no.nav.helse.spesialist.test.lagAktørId
import no.nav.helse.spesialist.test.lagFødselsnummer
Expand Down Expand Up @@ -70,29 +71,29 @@ internal class AbonnementDaoTest : DatabaseIntegrationTest() {
}
}

private fun settSekvensnummer(saksbehandlerId: UUID, sekvensnummer: Int) = query(
private fun settSekvensnummer(saksbehandlerId: UUID, sekvensnummer: Int) = asSQL(
"""
insert into saksbehandler_opptegnelse_sekvensnummer
values ('$saksbehandlerId', $sekvensnummer)
""".trimIndent()
).update()

private fun lagOpptegnelse(personRef: Long, eksisterendeSekvensnummer: Int) = query(
private fun lagOpptegnelse(personRef: Long, eksisterendeSekvensnummer: Int) = asSQL(
"""
insert into opptegnelse
values (:person_id, :sekvensnummer, '{"innhold": "noe oppdateringsrelatert"}', 'en eller annen opptegnelsestype')
""".trimIndent(), "person_id" to personRef, "sekvensnummer" to eksisterendeSekvensnummer
).update()

private fun finnSekvensnummer(saksbehandlerId: UUID) = query(
private fun finnSekvensnummer(saksbehandlerId: UUID) = asSQL(
"""
select siste_sekvensnummer
from saksbehandler_opptegnelse_sekvensnummer
where saksbehandler_id = :saksbehandlerId
""".trimIndent(), "saksbehandlerId" to saksbehandlerId
).single { it.intOrNull("siste_sekvensnummer") }

private fun finnPersonerSaksbehandlerAbonnererPå(saksbehandlerId: UUID) = query(
private fun finnPersonerSaksbehandlerAbonnererPå(saksbehandlerId: UUID) = asSQL(
"""
select aktor_id
from abonnement_for_opptegnelse
Expand Down

0 comments on commit 354bb4a

Please sign in to comment.