diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/ReservasjonDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/ReservasjonDao.kt index 28bbae6f8..39448cb28 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/ReservasjonDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/ReservasjonDao.kt @@ -1,23 +1,51 @@ package no.nav.helse.db -import kotliquery.sessionOf -import no.nav.helse.HelseDao +import kotliquery.Session +import no.nav.helse.HelseDao.Companion.asSQL import java.util.UUID import javax.sql.DataSource -class ReservasjonDao(private val dataSource: DataSource) : HelseDao(dataSource), ReservasjonRepository { +class ReservasjonDao(queryRunner: QueryRunner) : ReservasjonRepository, QueryRunner by queryRunner { + constructor(session: Session) : this(MedSession(session)) + constructor(dataSource: DataSource) : this(MedDataSource(dataSource)) + override fun reserverPerson( saksbehandlerOid: UUID, fødselsnummer: String, ) { - sessionOf(dataSource).use { session -> - TransactionalReservasjonDao(session).reserverPerson(saksbehandlerOid, fødselsnummer) - } + asSQL( + """ + INSERT INTO reserver_person(saksbehandler_ref, person_ref) + SELECT :saksbehandler_ref, person.id + FROM person + WHERE person.fodselsnummer = :foedselsnummer + ON CONFLICT (person_ref) + DO UPDATE SET gyldig_til = current_date + time '23:59:59', + saksbehandler_ref = :saksbehandler_ref; + """.trimIndent(), + "saksbehandler_ref" to saksbehandlerOid, + "foedselsnummer" to fødselsnummer.toLong(), + ).update() } override fun hentReservasjonFor(fødselsnummer: String): Reservasjon? = - sessionOf(dataSource).use { session -> - TransactionalReservasjonDao(session).hentReservasjonFor(fødselsnummer) + asSQL( + """ + SELECT r.*, s.* FROM reserver_person r + JOIN person p ON p.id = r.person_ref + JOIN saksbehandler s ON r.saksbehandler_ref = s.oid + WHERE p.fodselsnummer = :foedselsnummer AND r.gyldig_til > now(); + """.trimIndent(), + "foedselsnummer" to fødselsnummer.toLong(), + ).single { row -> + Reservasjon( + SaksbehandlerFraDatabase( + oid = row.uuid("oid"), + navn = row.string("navn"), + epostadresse = row.string("epost"), + ident = row.string("ident"), + ), + ) } } diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalReservasjonDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalReservasjonDao.kt deleted file mode 100644 index f18caac8c..000000000 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalReservasjonDao.kt +++ /dev/null @@ -1,60 +0,0 @@ -package no.nav.helse.db - -import kotliquery.Session -import kotliquery.queryOf -import org.intellij.lang.annotations.Language -import java.util.UUID - -class TransactionalReservasjonDao(private val session: Session) : ReservasjonRepository { - override fun reserverPerson( - saksbehandlerOid: UUID, - fødselsnummer: String, - ) { - @Language("PostgreSQL") - val query = """ - INSERT INTO reserver_person(saksbehandler_ref, person_ref) - SELECT :saksbehandler_ref, person.id - FROM person - WHERE person.fodselsnummer = :fodselsnummer - ON CONFLICT (person_ref) - DO UPDATE SET gyldig_til = current_date + time '23:59:59', - saksbehandler_ref = :saksbehandler_ref; - """ - session.run( - queryOf( - query, - mapOf( - "saksbehandler_ref" to saksbehandlerOid, - "fodselsnummer" to fødselsnummer.toLong(), - ), - ).asUpdate, - ) - } - - override fun hentReservasjonFor(fødselsnummer: String): Reservasjon? { - @Language("PostgreSQL") - val query = """ - SELECT r.*, s.* FROM reserver_person r - JOIN person p ON p.id = r.person_ref - JOIN saksbehandler s ON r.saksbehandler_ref = s.oid - WHERE p.fodselsnummer = :fnr AND r.gyldig_til > now(); - """ - return session.run( - queryOf( - query, - mapOf( - "fnr" to fødselsnummer.toLong(), - ), - ).map { row -> - Reservasjon( - SaksbehandlerFraDatabase( - oid = row.uuid("oid"), - navn = row.string("navn"), - epostadresse = row.string("epost"), - ident = row.string("ident"), - ), - ) - }.asSingle, - ) - } -} diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt index 843f3607b..38264a14a 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/Kommandofabrikk.kt @@ -9,6 +9,7 @@ import no.nav.helse.db.InntektskilderDao import no.nav.helse.db.OppgaveRepository import no.nav.helse.db.OpptegnelseDao import no.nav.helse.db.PgTotrinnsvurderingDao +import no.nav.helse.db.ReservasjonDao import no.nav.helse.db.TransactionalAvviksvurderingDao import no.nav.helse.db.TransactionalCommandContextDao import no.nav.helse.db.TransactionalEgenAnsattDao @@ -17,7 +18,6 @@ import no.nav.helse.db.TransactionalOppgaveDao import no.nav.helse.db.TransactionalOverstyringDao import no.nav.helse.db.TransactionalPeriodehistorikkDao import no.nav.helse.db.TransactionalPåVentDao -import no.nav.helse.db.TransactionalReservasjonDao import no.nav.helse.db.TransactionalRisikovurderingDao import no.nav.helse.db.TransactionalTildelingDao import no.nav.helse.db.TransactionalUtbetalingDao @@ -199,7 +199,7 @@ internal class Kommandofabrikk( historikkinnslagRepository = TransactionalPeriodehistorikkDao(session), commandContextRepository = TransactionalCommandContextDao(session), oppgaveService = transaksjonellOppgaveService(session), - reservasjonRepository = TransactionalReservasjonDao(session), + reservasjonRepository = ReservasjonDao(session), tildelingRepository = TransactionalTildelingDao(session), oppgaveRepository = TransactionalOppgaveDao(session), totrinnsvurderingService = lagTotrinnsvurderingService(session), @@ -297,7 +297,7 @@ internal class Kommandofabrikk( personbeløp = hendelse.personbeløp, utbetalingRepository = TransactionalUtbetalingDao(session), opptegnelseRepository = OpptegnelseDao(session), - reservasjonRepository = TransactionalReservasjonDao(session), + reservasjonRepository = ReservasjonDao(session), oppgaveRepository = TransactionalOppgaveDao(session), tildelingRepository = TransactionalTildelingDao(session), oppgaveService = transaksjonellOppgaveService(session), @@ -315,7 +315,7 @@ internal class Kommandofabrikk( id = hendelse.id, commandContextRepository = TransactionalCommandContextDao(session), oppgaveService = transaksjonellOppgaveService(session), - reservasjonRepository = TransactionalReservasjonDao(session), + reservasjonRepository = ReservasjonDao(session), tildelingRepository = TransactionalTildelingDao(session), oppgaveRepository = TransactionalOppgaveDao(session), totrinnsvurderingService = lagTotrinnsvurderingService(session), diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveService.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveService.kt index b3f60dc20..037c88f92 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveService.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveService.kt @@ -9,6 +9,7 @@ import no.nav.helse.db.OppgavesorteringForDatabase import no.nav.helse.db.OpptegnelseDao import no.nav.helse.db.OpptegnelseRepository import no.nav.helse.db.PgTotrinnsvurderingDao +import no.nav.helse.db.ReservasjonDao import no.nav.helse.db.ReservasjonRepository import no.nav.helse.db.SaksbehandlerRepository import no.nav.helse.db.SorteringsnøkkelForDatabase @@ -16,7 +17,6 @@ import no.nav.helse.db.TildelingRepository import no.nav.helse.db.TotrinnsvurderingDao import no.nav.helse.db.TotrinnsvurderingFraDatabase import no.nav.helse.db.TransactionalOppgaveDao -import no.nav.helse.db.TransactionalReservasjonDao import no.nav.helse.db.TransactionalSaksbehandlerDao import no.nav.helse.db.TransactionalTildelingDao import no.nav.helse.mediator.SaksbehandlerMediator.Companion.tilApiversjon @@ -77,7 +77,7 @@ internal class OppgaveService( OppgaveService( oppgaveRepository = TransactionalOppgaveDao(transactionalSession), tildelingRepository = TransactionalTildelingDao(transactionalSession), - reservasjonRepository = TransactionalReservasjonDao(transactionalSession), + reservasjonRepository = ReservasjonDao(transactionalSession), opptegnelseRepository = OpptegnelseDao(transactionalSession), totrinnsvurderingDao = PgTotrinnsvurderingDao(transactionalSession), saksbehandlerRepository = TransactionalSaksbehandlerDao(transactionalSession), diff --git a/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt b/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt index 0cff2481e..134fe2b94 100644 --- a/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt +++ b/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt @@ -3,10 +3,10 @@ import no.nav.helse.TestRapidHelpers.oppgaveId import no.nav.helse.TestRapidHelpers.siste import no.nav.helse.db.OpptegnelseDao import no.nav.helse.db.PgHistorikkinnslagRepository +import no.nav.helse.db.PgTotrinnsvurderingDao import no.nav.helse.db.ReservasjonDao import no.nav.helse.db.SaksbehandlerDao import no.nav.helse.db.TildelingDao -import no.nav.helse.db.PgTotrinnsvurderingDao import no.nav.helse.mediator.GodkjenningService import no.nav.helse.mediator.oppgave.OppgaveDao import no.nav.helse.mediator.oppgave.OppgaveService diff --git a/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt b/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt index 9d5ecdd96..0a528d79e 100644 --- a/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt +++ b/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt @@ -153,7 +153,7 @@ abstract class DatabaseIntegrationTest : AbstractDatabaseTest() { internal val saksbehandlerDao = SaksbehandlerDao(dataSource) internal val overstyringDao = OverstyringDao(dataSource) internal val overstyringApiDao = OverstyringApiDao(dataSource) - internal val reservasjonDao = ReservasjonDao(dataSource) + internal val reservasjonDao = ReservasjonDao(session) internal val meldingDao = MeldingDao(dataSource) internal val meldingDuplikatkontrollDao = MeldingDuplikatkontrollDao(dataSource) internal val risikovurderingDao = RisikovurderingDao(dataSource) diff --git a/spesialist-selve/src/test/kotlin/TestMediator.kt b/spesialist-selve/src/test/kotlin/TestMediator.kt index ebec1e5ca..1ef485bfb 100644 --- a/spesialist-selve/src/test/kotlin/TestMediator.kt +++ b/spesialist-selve/src/test/kotlin/TestMediator.kt @@ -3,11 +3,11 @@ import no.nav.helse.db.AvviksvurderingDao import no.nav.helse.db.NotatDao import no.nav.helse.db.OpptegnelseDao import no.nav.helse.db.PgHistorikkinnslagRepository +import no.nav.helse.db.PgTotrinnsvurderingDao import no.nav.helse.db.ReservasjonDao import no.nav.helse.db.SaksbehandlerDao import no.nav.helse.db.StansAutomatiskBehandlingDao import no.nav.helse.db.TildelingDao -import no.nav.helse.db.PgTotrinnsvurderingDao import no.nav.helse.mediator.GodkjenningMediator import no.nav.helse.mediator.Kommandofabrikk import no.nav.helse.mediator.MeldingMediator