diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/bootstrap/SpesialistApp.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/bootstrap/SpesialistApp.kt index d5062b3b8..9a69c17a1 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/bootstrap/SpesialistApp.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/bootstrap/SpesialistApp.kt @@ -99,7 +99,7 @@ internal class SpesialistApp( private val notatApiDao = NotatApiDao(dataSource) private val notatDao = NotatDao(dataSource) private val totrinnsvurderingApiDao = TotrinnsvurderingApiDao(dataSource) - private val totrinnsvurderingDao = TotrinnsvurderingDao(dataSource) + private val totrinnsvurderingDao = TotrinnsvurderingDao.NonTransactional(dataSource) private val snapshotApiDao = SnapshotApiDao(dataSource) private val apiVarselRepository = ApiVarselRepository(dataSource) private val dokumentDao = DokumentDao.NonTransactional(dataSource) @@ -125,7 +125,7 @@ internal class SpesialistApp( ) { subsumsjonsmelder } private val totrinnsvurderingService = TotrinnsvurderingService( - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, oppgaveRepository = oppgaveDao, historikkinnslagRepository = pgHistorikkinnslagRepository, ) @@ -226,7 +226,7 @@ internal class SpesialistApp( tildelingRepository = tildelingDao, reservasjonRepository = reservasjonDao, opptegnelseRepository = opptegnelseDao, - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, saksbehandlerRepository = saksbehandlerDao, rapidsConnection = rapidsConnection, tilgangskontroll = tilgangskontrollørForReservasjon, diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDao.kt index 0a58c3cb5..25158a30c 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDao.kt @@ -1,58 +1,249 @@ package no.nav.helse.db +import kotliquery.Query +import kotliquery.Session +import kotliquery.queryOf import kotliquery.sessionOf import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingOld +import org.intellij.lang.annotations.Language import java.util.UUID import javax.sql.DataSource -class TotrinnsvurderingDao(private val dataSource: DataSource) : TotrinnsvurderingRepository { - override fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) { - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).oppdater(totrinnsvurderingFraDatabase) +internal class TotrinnsvurderingDao( + private val session: Session, +) : TotrinnsvurderingDaoInterface { + internal object NonTransactional { + operator fun invoke(dataSource: DataSource): TotrinnsvurderingDaoInterface { + fun inSession(block: (Session) -> T) = sessionOf(dataSource).use { block(it) } + + return object : TotrinnsvurderingDaoInterface { + override fun hentAktivTotrinnsvurdering(oppgaveId: Long): TotrinnsvurderingFraDatabase? { + return inSession { TotrinnsvurderingDao(it).hentAktivTotrinnsvurdering(oppgaveId) } + } + + override fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) { + inSession { TotrinnsvurderingDao(it).oppdater(totrinnsvurderingFraDatabase) } + } + + override fun settBeslutter( + oppgaveId: Long, + saksbehandlerOid: UUID, + ) { + inSession { TotrinnsvurderingDao(it).settBeslutter(oppgaveId, saksbehandlerOid) } + } + + override fun settErRetur(vedtaksperiodeId: UUID) { + inSession { TotrinnsvurderingDao(it).settErRetur(vedtaksperiodeId) } + } + + override fun opprett(vedtaksperiodeId: UUID): TotrinnsvurderingOld { + return inSession { TotrinnsvurderingDao(it).opprett(vedtaksperiodeId) } + } + + override fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? { + return inSession { TotrinnsvurderingDao(it).hentAktiv(oppgaveId) } + } + + override fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? { + return inSession { TotrinnsvurderingDao(it).hentAktiv(vedtaksperiodeId) } + } + + override fun ferdigstill(vedtaksperiodeId: UUID) { + inSession { TotrinnsvurderingDao(it).ferdigstill(vedtaksperiodeId) } + } + } } } override fun hentAktivTotrinnsvurdering(oppgaveId: Long): TotrinnsvurderingFraDatabase? { - return sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).hentAktivTotrinnsvurdering(oppgaveId) - } + @Language("PostgreSQL") + val query = + """ + SELECT v.vedtaksperiode_id, + er_retur, + tv.saksbehandler, + tv.beslutter, + ui.id as utbetaling_id, + tv.opprettet, + tv.oppdatert + FROM totrinnsvurdering tv + INNER JOIN vedtak v on tv.vedtaksperiode_id = v.vedtaksperiode_id + INNER JOIN oppgave o on v.id = o.vedtak_ref + LEFT JOIN utbetaling_id ui on ui.id = tv.utbetaling_id_ref + WHERE o.id = :oppgaveId + AND utbetaling_id_ref IS NULL + """.trimIndent() + + return session.run( + queryOf(query, mapOf("oppgaveId" to oppgaveId)).map { row -> + TotrinnsvurderingFraDatabase( + vedtaksperiodeId = row.uuid("vedtaksperiode_id"), + erRetur = row.boolean("er_retur"), + saksbehandler = row.uuidOrNull("saksbehandler"), + beslutter = row.uuidOrNull("beslutter"), + utbetalingId = row.uuidOrNull("utbetaling_id"), + opprettet = row.localDateTime("opprettet"), + oppdatert = row.localDateTimeOrNull("oppdatert"), + ) + }.asSingle, + ) } - override fun opprett(vedtaksperiodeId: UUID): TotrinnsvurderingOld = - sessionOf(dataSource).use { session -> - session.transaction { transaction -> - TransactionalTotrinnsvurderingDao(transaction).opprett(vedtaksperiodeId) - } - } + override fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) { + @Language("PostgreSQL") + val query = + """ + UPDATE totrinnsvurdering + SET saksbehandler = :saksbehandler, + beslutter = :beslutter, + er_retur = :er_retur, + oppdatert = :oppdatert, + utbetaling_id_ref = (SELECT id FROM utbetaling_id ui WHERE ui.utbetaling_id = :utbetaling_id) + WHERE vedtaksperiode_id = :vedtaksperiode_id + AND utbetaling_id_ref IS NULL + """.trimIndent() + + session.run( + queryOf( + query, + mapOf( + "saksbehandler" to totrinnsvurderingFraDatabase.saksbehandler, + "beslutter" to totrinnsvurderingFraDatabase.beslutter, + "er_retur" to totrinnsvurderingFraDatabase.erRetur, + "oppdatert" to totrinnsvurderingFraDatabase.oppdatert, + "utbetaling_id" to totrinnsvurderingFraDatabase.utbetalingId, + "vedtaksperiode_id" to totrinnsvurderingFraDatabase.vedtaksperiodeId, + ), + ).asUpdate, + ) + } override fun settBeslutter( oppgaveId: Long, saksbehandlerOid: UUID, ) { - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).settBeslutter(oppgaveId, saksbehandlerOid) - } + @Language("PostgreSQL") + val query = + """ + UPDATE totrinnsvurdering SET beslutter = :saksbehandlerOid, oppdatert = now() + WHERE vedtaksperiode_id = ( + SELECT ttv.vedtaksperiode_id + FROM totrinnsvurdering ttv + INNER JOIN vedtak v on ttv.vedtaksperiode_id = v.vedtaksperiode_id + INNER JOIN oppgave o on v.id = o.vedtak_ref + WHERE o.id = :oppgaveId + LIMIT 1 + ) + AND utbetaling_id_ref IS null + """.trimIndent() + + session.run( + queryOf( + query, + mapOf("oppgaveId" to oppgaveId, "saksbehandlerOid" to saksbehandlerOid), + ).asExecute, + ) } override fun settErRetur(vedtaksperiodeId: UUID) { - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).settErRetur(vedtaksperiodeId) - } + @Language("PostgreSQL") + val query = + """ + UPDATE totrinnsvurdering SET er_retur = true, oppdatert = now() + WHERE vedtaksperiode_id = :vedtaksperiodeId + AND utbetaling_id_ref IS null + """.trimIndent() + + session.run( + queryOf( + query, + mapOf("vedtaksperiodeId" to vedtaksperiodeId), + ).asExecute, + ) } - override fun ferdigstill(vedtaksperiodeId: UUID) { - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).ferdigstill(vedtaksperiodeId) - } + override fun opprett(vedtaksperiodeId: UUID): TotrinnsvurderingOld { + return hentAktiv(vedtaksperiodeId) ?: opprettTotrinnsvurdering(vedtaksperiodeId) } - override fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? = - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).hentAktiv(vedtaksperiodeId) - } + private fun opprettTotrinnsvurdering(vedtaksperiodeId: UUID): TotrinnsvurderingOld { + @Language("PostgreSQL") + val query = + """ + INSERT INTO totrinnsvurdering (vedtaksperiode_id) + VALUES (:vedtaksperiodeId) + """.trimIndent() + session.run(queryOf(query, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).asUpdate) + @Language("PostgreSQL") + val selectQuery = + """ + SELECT * FROM totrinnsvurdering + WHERE vedtaksperiode_id = :vedtaksperiodeId + """.trimIndent() + val totrinnsvurdering = session.run(queryOf(selectQuery, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).tilTotrinnsvurdering()) - override fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? = - sessionOf(dataSource).use { session -> - TransactionalTotrinnsvurderingDao(session).hentAktiv(oppgaveId) - } + return requireNotNull(totrinnsvurdering) + } + + override fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? { + @Language("PostgreSQL") + val query = + """ + SELECT * FROM totrinnsvurdering + INNER JOIN vedtak v on totrinnsvurdering.vedtaksperiode_id = v.vedtaksperiode_id + INNER JOIN oppgave o on v.id = o.vedtak_ref + WHERE o.id = :oppgaveId + AND utbetaling_id_ref IS NULL + """.trimIndent() + + return session.run(queryOf(query, mapOf("oppgaveId" to oppgaveId)).tilTotrinnsvurdering()) + } + + override fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? { + @Language("PostgreSQL") + val query = + """ + SELECT * FROM totrinnsvurdering + WHERE vedtaksperiode_id = :vedtaksperiodeId + AND utbetaling_id_ref IS NULL + """.trimIndent() + + return session.run(queryOf(query, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).tilTotrinnsvurdering()) + } + + override fun ferdigstill(vedtaksperiodeId: UUID) { + @Language("PostgreSQL") + val query = + """ + UPDATE totrinnsvurdering SET utbetaling_id_ref = ( + SELECT id FROM utbetaling_id ui + INNER JOIN vedtaksperiode_utbetaling_id vui ON vui.utbetaling_id = ui.utbetaling_id + WHERE vui.vedtaksperiode_id = :vedtaksperiodeId + ORDER BY ui.id DESC + LIMIT 1 + ), oppdatert = now() + WHERE vedtaksperiode_id = :vedtaksperiodeId + AND utbetaling_id_ref IS null + """.trimIndent() + + session.run( + queryOf( + query, + mapOf("vedtaksperiodeId" to vedtaksperiodeId), + ).asExecute, + ) + } + + private fun Query.tilTotrinnsvurdering() = + map { row -> + TotrinnsvurderingOld( + vedtaksperiodeId = row.uuid("vedtaksperiode_id"), + erRetur = row.boolean("er_retur"), + saksbehandler = row.uuidOrNull("saksbehandler"), + beslutter = row.uuidOrNull("beslutter"), + utbetalingIdRef = row.longOrNull("utbetaling_id_ref"), + opprettet = row.localDateTime("opprettet"), + oppdatert = row.localDateTimeOrNull("oppdatert"), + ) + }.asSingle } diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingRepository.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDaoInterface.kt similarity index 93% rename from spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingRepository.kt rename to spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDaoInterface.kt index ee9d33992..574dd2ff9 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingRepository.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TotrinnsvurderingDaoInterface.kt @@ -3,7 +3,7 @@ package no.nav.helse.db import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingOld import java.util.UUID -interface TotrinnsvurderingRepository { +interface TotrinnsvurderingDaoInterface { fun hentAktivTotrinnsvurdering(oppgaveId: Long): TotrinnsvurderingFraDatabase? fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalTotrinnsvurderingDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalTotrinnsvurderingDao.kt deleted file mode 100644 index 42c3a2e8d..000000000 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/TransactionalTotrinnsvurderingDao.kt +++ /dev/null @@ -1,204 +0,0 @@ -package no.nav.helse.db - -import kotliquery.Query -import kotliquery.Session -import kotliquery.queryOf -import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingOld -import org.intellij.lang.annotations.Language -import java.util.UUID - -internal class TransactionalTotrinnsvurderingDao( - private val session: Session, -) : TotrinnsvurderingRepository { - override fun hentAktivTotrinnsvurdering(oppgaveId: Long): TotrinnsvurderingFraDatabase? { - @Language("PostgreSQL") - val query = - """ - SELECT v.vedtaksperiode_id, - er_retur, - tv.saksbehandler, - tv.beslutter, - ui.id as utbetaling_id, - tv.opprettet, - tv.oppdatert - FROM totrinnsvurdering tv - INNER JOIN vedtak v on tv.vedtaksperiode_id = v.vedtaksperiode_id - INNER JOIN oppgave o on v.id = o.vedtak_ref - LEFT JOIN utbetaling_id ui on ui.id = tv.utbetaling_id_ref - WHERE o.id = :oppgaveId - AND utbetaling_id_ref IS NULL - """.trimIndent() - - return session.run( - queryOf(query, mapOf("oppgaveId" to oppgaveId)).map { row -> - TotrinnsvurderingFraDatabase( - vedtaksperiodeId = row.uuid("vedtaksperiode_id"), - erRetur = row.boolean("er_retur"), - saksbehandler = row.uuidOrNull("saksbehandler"), - beslutter = row.uuidOrNull("beslutter"), - utbetalingId = row.uuidOrNull("utbetaling_id"), - opprettet = row.localDateTime("opprettet"), - oppdatert = row.localDateTimeOrNull("oppdatert"), - ) - }.asSingle, - ) - } - - override fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) { - @Language("PostgreSQL") - val query = - """ - UPDATE totrinnsvurdering - SET saksbehandler = :saksbehandler, - beslutter = :beslutter, - er_retur = :er_retur, - oppdatert = :oppdatert, - utbetaling_id_ref = (SELECT id FROM utbetaling_id ui WHERE ui.utbetaling_id = :utbetaling_id) - WHERE vedtaksperiode_id = :vedtaksperiode_id - AND utbetaling_id_ref IS NULL - """.trimIndent() - - session.run( - queryOf( - query, - mapOf( - "saksbehandler" to totrinnsvurderingFraDatabase.saksbehandler, - "beslutter" to totrinnsvurderingFraDatabase.beslutter, - "er_retur" to totrinnsvurderingFraDatabase.erRetur, - "oppdatert" to totrinnsvurderingFraDatabase.oppdatert, - "utbetaling_id" to totrinnsvurderingFraDatabase.utbetalingId, - "vedtaksperiode_id" to totrinnsvurderingFraDatabase.vedtaksperiodeId, - ), - ).asUpdate, - ) - } - - override fun settBeslutter( - oppgaveId: Long, - saksbehandlerOid: UUID, - ) { - @Language("PostgreSQL") - val query = - """ - UPDATE totrinnsvurdering SET beslutter = :saksbehandlerOid, oppdatert = now() - WHERE vedtaksperiode_id = ( - SELECT ttv.vedtaksperiode_id - FROM totrinnsvurdering ttv - INNER JOIN vedtak v on ttv.vedtaksperiode_id = v.vedtaksperiode_id - INNER JOIN oppgave o on v.id = o.vedtak_ref - WHERE o.id = :oppgaveId - LIMIT 1 - ) - AND utbetaling_id_ref IS null - """.trimIndent() - - session.run( - queryOf( - query, - mapOf("oppgaveId" to oppgaveId, "saksbehandlerOid" to saksbehandlerOid), - ).asExecute, - ) - } - - override fun settErRetur(vedtaksperiodeId: UUID) { - @Language("PostgreSQL") - val query = - """ - UPDATE totrinnsvurdering SET er_retur = true, oppdatert = now() - WHERE vedtaksperiode_id = :vedtaksperiodeId - AND utbetaling_id_ref IS null - """.trimIndent() - - session.run( - queryOf( - query, - mapOf("vedtaksperiodeId" to vedtaksperiodeId), - ).asExecute, - ) - } - - override fun opprett(vedtaksperiodeId: UUID): TotrinnsvurderingOld { - return hentAktiv(vedtaksperiodeId) ?: opprettTotrinnsvurdering(vedtaksperiodeId) - } - - private fun opprettTotrinnsvurdering(vedtaksperiodeId: UUID): TotrinnsvurderingOld { - @Language("PostgreSQL") - val query = - """ - INSERT INTO totrinnsvurdering (vedtaksperiode_id) - VALUES (:vedtaksperiodeId) - """.trimIndent() - session.run(queryOf(query, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).asUpdate) - @Language("PostgreSQL") - val selectQuery = - """ - SELECT * FROM totrinnsvurdering - WHERE vedtaksperiode_id = :vedtaksperiodeId - """.trimIndent() - val totrinnsvurdering = session.run(queryOf(selectQuery, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).tilTotrinnsvurdering()) - - return requireNotNull(totrinnsvurdering) - } - - override fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? { - @Language("PostgreSQL") - val query = - """ - SELECT * FROM totrinnsvurdering - INNER JOIN vedtak v on totrinnsvurdering.vedtaksperiode_id = v.vedtaksperiode_id - INNER JOIN oppgave o on v.id = o.vedtak_ref - WHERE o.id = :oppgaveId - AND utbetaling_id_ref IS NULL - """.trimIndent() - - return session.run(queryOf(query, mapOf("oppgaveId" to oppgaveId)).tilTotrinnsvurdering()) - } - - override fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? { - @Language("PostgreSQL") - val query = - """ - SELECT * FROM totrinnsvurdering - WHERE vedtaksperiode_id = :vedtaksperiodeId - AND utbetaling_id_ref IS NULL - """.trimIndent() - - return session.run(queryOf(query, mapOf("vedtaksperiodeId" to vedtaksperiodeId)).tilTotrinnsvurdering()) - } - - override fun ferdigstill(vedtaksperiodeId: UUID) { - @Language("PostgreSQL") - val query = - """ - UPDATE totrinnsvurdering SET utbetaling_id_ref = ( - SELECT id FROM utbetaling_id ui - INNER JOIN vedtaksperiode_utbetaling_id vui ON vui.utbetaling_id = ui.utbetaling_id - WHERE vui.vedtaksperiode_id = :vedtaksperiodeId - ORDER BY ui.id DESC - LIMIT 1 - ), oppdatert = now() - WHERE vedtaksperiode_id = :vedtaksperiodeId - AND utbetaling_id_ref IS null - """.trimIndent() - - session.run( - queryOf( - query, - mapOf("vedtaksperiodeId" to vedtaksperiodeId), - ).asExecute, - ) - } - - private fun Query.tilTotrinnsvurdering() = - map { row -> - TotrinnsvurderingOld( - vedtaksperiodeId = row.uuid("vedtaksperiode_id"), - erRetur = row.boolean("er_retur"), - saksbehandler = row.uuidOrNull("saksbehandler"), - beslutter = row.uuidOrNull("beslutter"), - utbetalingIdRef = row.longOrNull("utbetaling_id_ref"), - opprettet = row.localDateTime("opprettet"), - oppdatert = row.localDateTimeOrNull("oppdatert"), - ) - }.asSingle -} diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/GodkjenningService.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/GodkjenningService.kt index df2862e19..7ea910bf8 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/GodkjenningService.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/GodkjenningService.kt @@ -33,7 +33,7 @@ internal class GodkjenningService( private val saksbehandlerRepository: SaksbehandlerRepository, private val totrinnsvurderingService: TotrinnsvurderingService = TotrinnsvurderingService( - TotrinnsvurderingDao(dataSource), + TotrinnsvurderingDao.NonTransactional(dataSource), oppgaveDao, pgHistorikkinnslagRepository, ), 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 787d01f02..b67a0d0aa 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 @@ -6,6 +6,7 @@ import no.nav.helse.db.AvviksvurderingDao import no.nav.helse.db.CommandContextRepository import no.nav.helse.db.InntektskilderDao import no.nav.helse.db.OppgaveRepository +import no.nav.helse.db.TotrinnsvurderingDao import no.nav.helse.db.TransactionalArbeidsforholdDao import no.nav.helse.db.TransactionalAvviksvurderingDao import no.nav.helse.db.TransactionalCommandContextDao @@ -20,7 +21,6 @@ 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.TransactionalTotrinnsvurderingDao import no.nav.helse.db.TransactionalUtbetalingDao import no.nav.helse.db.TransactionalVedtakDao import no.nav.helse.db.TransactionalVergemålDao @@ -205,7 +205,7 @@ internal class Kommandofabrikk( oppgaveRepository = TransactionalOppgaveDao(session), totrinnsvurderingService = TotrinnsvurderingService( - TransactionalTotrinnsvurderingDao(session), + TotrinnsvurderingDao(session), TransactionalOppgaveDao(session), TransactionalPeriodehistorikkDao(session), ), @@ -309,7 +309,7 @@ internal class Kommandofabrikk( oppgaveService = transaksjonellOppgaveService(session), totrinnsvurderingService = TotrinnsvurderingService( - TransactionalTotrinnsvurderingDao(session), + TotrinnsvurderingDao(session), TransactionalOppgaveDao(session), TransactionalPeriodehistorikkDao(session), ), @@ -331,7 +331,7 @@ internal class Kommandofabrikk( oppgaveRepository = TransactionalOppgaveDao(session), totrinnsvurderingService = TotrinnsvurderingService( - TransactionalTotrinnsvurderingDao(session), + TotrinnsvurderingDao(session), TransactionalOppgaveDao(session), TransactionalPeriodehistorikkDao(session), ), @@ -396,7 +396,7 @@ internal class Kommandofabrikk( godkjenningMediator = GodkjenningMediator(TransactionalOpptegnelseDao(session)), totrinnsvurderingService = TotrinnsvurderingService( - TransactionalTotrinnsvurderingDao(session), + TotrinnsvurderingDao(session), TransactionalOppgaveDao(session), TransactionalPeriodehistorikkDao(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 dea397c95..888031fcd 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 @@ -11,14 +11,14 @@ import no.nav.helse.db.ReservasjonRepository import no.nav.helse.db.SaksbehandlerRepository import no.nav.helse.db.SorteringsnøkkelForDatabase import no.nav.helse.db.TildelingRepository +import no.nav.helse.db.TotrinnsvurderingDao +import no.nav.helse.db.TotrinnsvurderingDaoInterface import no.nav.helse.db.TotrinnsvurderingFraDatabase -import no.nav.helse.db.TotrinnsvurderingRepository import no.nav.helse.db.TransactionalOppgaveDao import no.nav.helse.db.TransactionalOpptegnelseDao import no.nav.helse.db.TransactionalReservasjonDao import no.nav.helse.db.TransactionalSaksbehandlerDao import no.nav.helse.db.TransactionalTildelingDao -import no.nav.helse.db.TransactionalTotrinnsvurderingDao import no.nav.helse.mediator.SaksbehandlerMediator.Companion.tilApiversjon import no.nav.helse.mediator.TilgangskontrollørForApi import no.nav.helse.mediator.oppgave.OppgaveMapper.tilApiversjon @@ -64,7 +64,7 @@ internal class OppgaveService( private val tildelingRepository: TildelingRepository, private val reservasjonRepository: ReservasjonRepository, private val opptegnelseRepository: OpptegnelseRepository, - private val totrinnsvurderingRepository: TotrinnsvurderingRepository, + private val totrinnsvurderingDaoInterface: TotrinnsvurderingDaoInterface, private val saksbehandlerRepository: SaksbehandlerRepository, private val rapidsConnection: RapidsConnection, private val tilgangskontroll: Tilgangskontroll, @@ -79,7 +79,7 @@ internal class OppgaveService( tildelingRepository = TransactionalTildelingDao(transactionalSession), reservasjonRepository = TransactionalReservasjonDao(transactionalSession), opptegnelseRepository = TransactionalOpptegnelseDao(transactionalSession), - totrinnsvurderingRepository = TransactionalTotrinnsvurderingDao(transactionalSession), + totrinnsvurderingDaoInterface = TotrinnsvurderingDao(transactionalSession), saksbehandlerRepository = TransactionalSaksbehandlerDao(transactionalSession), rapidsConnection = rapidsConnection, tilgangskontroll = tilgangskontroll, @@ -107,7 +107,7 @@ internal class OppgaveService( val oppgave = Oppgavehenter( oppgaveRepository, - totrinnsvurderingRepository, + totrinnsvurderingDaoInterface, saksbehandlerRepository, tilgangskontroll, ).oppgave(id) @@ -139,7 +139,7 @@ internal class OppgaveService( opprettet = totrinnsvurderingDto.opprettet, oppdatert = totrinnsvurderingDto.oppdatert, ) - totrinnsvurderingRepository.oppdater(totrinnsvurderingFraDatabase) + totrinnsvurderingDaoInterface.oppdater(totrinnsvurderingFraDatabase) } internal fun håndter( diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/Oppgavehenter.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/Oppgavehenter.kt index d4e0a99d0..48fd3c996 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/Oppgavehenter.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/Oppgavehenter.kt @@ -2,7 +2,7 @@ package no.nav.helse.mediator.oppgave import no.nav.helse.db.OppgaveRepository import no.nav.helse.db.SaksbehandlerRepository -import no.nav.helse.db.TotrinnsvurderingRepository +import no.nav.helse.db.TotrinnsvurderingDaoInterface import no.nav.helse.db.toDto import no.nav.helse.mediator.oppgave.OppgaveMapper.toDto import no.nav.helse.modell.oppgave.Oppgave @@ -13,7 +13,7 @@ import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingDto class Oppgavehenter( private val oppgaveRepository: OppgaveRepository, - private val totrinnsvurderingRepository: TotrinnsvurderingRepository, + private val totrinnsvurderingDaoInterface: TotrinnsvurderingDaoInterface, private val saksbehandlerRepository: SaksbehandlerRepository, private val tilgangskontroll: Tilgangskontroll, ) { @@ -21,7 +21,7 @@ class Oppgavehenter( val oppgave = oppgaveRepository.finnOppgave(id) ?: throw IllegalStateException("Forventer å finne oppgave med oppgaveId=$id") - val totrinnsvurdering = totrinnsvurderingRepository.hentAktivTotrinnsvurdering(id) + val totrinnsvurdering = totrinnsvurderingDaoInterface.hentAktivTotrinnsvurdering(id) val dto = OppgaveDto( diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/totrinnsvurdering/TotrinnsvurderingService.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/totrinnsvurdering/TotrinnsvurderingService.kt index 6bd8d414d..46f628987 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/modell/totrinnsvurdering/TotrinnsvurderingService.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/modell/totrinnsvurdering/TotrinnsvurderingService.kt @@ -2,7 +2,7 @@ package no.nav.helse.modell.totrinnsvurdering import no.nav.helse.db.HistorikkinnslagRepository import no.nav.helse.db.OppgaveRepository -import no.nav.helse.db.TotrinnsvurderingRepository +import no.nav.helse.db.TotrinnsvurderingDaoInterface import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto import no.nav.helse.modell.periodehistorikk.NotatDto import no.nav.helse.modell.saksbehandler.SaksbehandlerDto @@ -11,20 +11,20 @@ import no.nav.helse.spesialist.api.saksbehandler.SaksbehandlerFraApi import java.util.UUID class TotrinnsvurderingService( - private val totrinnsvurderingRepository: TotrinnsvurderingRepository, + private val totrinnsvurderingDaoInterface: TotrinnsvurderingDaoInterface, private val oppgaveRepository: OppgaveRepository, private val historikkinnslagRepository: HistorikkinnslagRepository, ) : Totrinnsvurderinghåndterer { - fun finnEllerOpprettNy(vedtaksperiodeId: UUID): TotrinnsvurderingOld = totrinnsvurderingRepository.opprett(vedtaksperiodeId) + fun finnEllerOpprettNy(vedtaksperiodeId: UUID): TotrinnsvurderingOld = totrinnsvurderingDaoInterface.opprett(vedtaksperiodeId) override fun settBeslutter( oppgaveId: Long, saksbehandlerOid: UUID, - ): Unit = totrinnsvurderingRepository.settBeslutter(oppgaveId, saksbehandlerOid) + ): Unit = totrinnsvurderingDaoInterface.settBeslutter(oppgaveId, saksbehandlerOid) fun settAutomatiskRetur(vedtaksperiodeId: UUID) { oppgaveRepository.finnIdForAktivOppgave(vedtaksperiodeId)?.let { - totrinnsvurderingRepository.settErRetur(vedtaksperiodeId) + totrinnsvurderingDaoInterface.settErRetur(vedtaksperiodeId) val innslag = HistorikkinnslagDto.totrinnsvurderingAutomatiskRetur() historikkinnslagRepository.lagre(innslag, it) } @@ -55,11 +55,11 @@ class TotrinnsvurderingService( saksbehandleroid: UUID?, ): Boolean = hentAktiv(oppgaveId)?.saksbehandler == saksbehandleroid - fun ferdigstill(vedtaksperiodeId: UUID): Unit = totrinnsvurderingRepository.ferdigstill(vedtaksperiodeId) + fun ferdigstill(vedtaksperiodeId: UUID): Unit = totrinnsvurderingDaoInterface.ferdigstill(vedtaksperiodeId) - fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? = totrinnsvurderingRepository.hentAktiv(vedtaksperiodeId) + fun hentAktiv(vedtaksperiodeId: UUID): TotrinnsvurderingOld? = totrinnsvurderingDaoInterface.hentAktiv(vedtaksperiodeId) - private fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? = totrinnsvurderingRepository.hentAktiv(oppgaveId) + private fun hentAktiv(oppgaveId: Long): TotrinnsvurderingOld? = totrinnsvurderingDaoInterface.hentAktiv(oppgaveId) private fun SaksbehandlerFraApi.toDto(): SaksbehandlerDto = SaksbehandlerDto( diff --git a/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt b/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt index f892cbf63..0debabae3 100644 --- a/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt +++ b/spesialist-selve/src/test/kotlin/AbstractIntegrationTest.kt @@ -26,7 +26,7 @@ internal abstract class AbstractIntegrationTest : AbstractE2ETest() { protected val oppgaveDao = OppgaveDao(dataSource) private val reservasjonDao = ReservasjonDao(dataSource) private val pgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource) - private val totrinnsvurderingDao = TotrinnsvurderingDao(dataSource) + private val totrinnsvurderingDao = TotrinnsvurderingDao.NonTransactional(dataSource) private val saksbehandlerDao = SaksbehandlerDao(dataSource) private val oppgaveService = @@ -35,7 +35,7 @@ internal abstract class AbstractIntegrationTest : AbstractE2ETest() { tildelingRepository = TildelingDao(dataSource), reservasjonRepository = reservasjonDao, opptegnelseRepository = OpptegnelseDao(dataSource), - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, saksbehandlerRepository = SaksbehandlerDao(dataSource), rapidsConnection = testRapid, tilgangskontroll = TilgangskontrollForTestHarIkkeTilgang, diff --git a/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt b/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt index f7f59c679..cfad29cb9 100644 --- a/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt +++ b/spesialist-selve/src/test/kotlin/DatabaseIntegrationTest.kt @@ -159,7 +159,7 @@ abstract class DatabaseIntegrationTest : AbstractDatabaseTest() { internal val behandlingsstatistikkDao = BehandlingsstatistikkDao(dataSource) internal val vergemålDao = VergemålDao(dataSource) internal val generasjonDao = GenerasjonDao(dataSource) - internal val totrinnsvurderingDao = TotrinnsvurderingDao(dataSource) + internal val totrinnsvurderingDao = TotrinnsvurderingDao.NonTransactional(dataSource) internal val dokumentDao = DokumentDao.NonTransactional(dataSource) internal val påVentDao = PåVentDao(dataSource) internal val stansAutomatiskBehandlingDao = StansAutomatiskBehandlingDao(dataSource) diff --git a/spesialist-selve/src/test/kotlin/TestMediator.kt b/spesialist-selve/src/test/kotlin/TestMediator.kt index 6313610c3..826ea6e9f 100644 --- a/spesialist-selve/src/test/kotlin/TestMediator.kt +++ b/spesialist-selve/src/test/kotlin/TestMediator.kt @@ -35,7 +35,7 @@ internal class TestMediator( private val oppgaveDao = OppgaveDao(dataSource) private val pgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource) private val overstyringDao = OverstyringDao(dataSource) - private val totrinnsvurderingDao = TotrinnsvurderingDao(dataSource) + private val totrinnsvurderingDao = TotrinnsvurderingDao.NonTransactional(dataSource) private val saksbehandlerDao = SaksbehandlerDao(dataSource) private val tildelingDao = TildelingDao(dataSource) private val avviksvurderingDao = AvviksvurderingDao(dataSource) @@ -57,7 +57,7 @@ internal class TestMediator( tildelingRepository = tildelingDao, reservasjonRepository = ReservasjonDao(dataSource), opptegnelseRepository = opptegnelseDao, - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, saksbehandlerRepository = saksbehandlerDao, rapidsConnection = testRapid, tilgangskontroll = TilgangskontrollForTestHarIkkeTilgang, @@ -72,7 +72,7 @@ internal class TestMediator( tilgangsgrupper, stansAutomatiskBehandlingMediator, totrinnsvurderingService = TotrinnsvurderingService( - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, oppgaveRepository = oppgaveDao, historikkinnslagRepository = pgHistorikkinnslagRepository ) diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveServiceTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveServiceTest.kt index 19ffdb1af..7fa104063 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveServiceTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveServiceTest.kt @@ -21,7 +21,7 @@ import no.nav.helse.db.ReservasjonRepository import no.nav.helse.db.SaksbehandlerFraDatabase import no.nav.helse.db.SaksbehandlerRepository import no.nav.helse.db.TildelingRepository -import no.nav.helse.db.TotrinnsvurderingRepository +import no.nav.helse.db.TotrinnsvurderingDaoInterface import no.nav.helse.idForGruppe import no.nav.helse.mediator.oppgave.OppgaveService import no.nav.helse.modell.kommando.TestMelding @@ -87,7 +87,7 @@ internal class OppgaveServiceTest { private val tildelingRepository = mockk(relaxed = true) private val reservasjonRepository = mockk(relaxed = true) private val opptegnelseRepository = mockk(relaxed = true) - private val totrinnsvurderingRepository = mockk(relaxed = true) + private val totrinnsvurderingDaoInterface = mockk(relaxed = true) private val saksbehandlerRepository = mockk() private val testRapid = TestRapid() @@ -97,7 +97,7 @@ internal class OppgaveServiceTest { tildelingRepository = tildelingRepository, reservasjonRepository = reservasjonRepository, opptegnelseRepository = opptegnelseRepository, - totrinnsvurderingRepository = totrinnsvurderingRepository, + totrinnsvurderingDaoInterface = totrinnsvurderingDaoInterface, saksbehandlerRepository = saksbehandlerRepository, rapidsConnection = testRapid, tilgangskontroll = TilgangskontrollForTestHarIkkeTilgang, diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/SaksbehandlerMediatorTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/SaksbehandlerMediatorTest.kt index 93748f722..8be62e595 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/SaksbehandlerMediatorTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/SaksbehandlerMediatorTest.kt @@ -84,7 +84,7 @@ internal class SaksbehandlerMediatorTest : DatabaseIntegrationTest() { ) private val mediator = SaksbehandlerMediator(dataSource, "versjonAvKode", testRapid, oppgaveService, tilgangsgrupper, stansAutomatiskBehandlingMediator, TotrinnsvurderingService( - totrinnsvurderingRepository = totrinnsvurderingDao, + totrinnsvurderingDaoInterface = totrinnsvurderingDao, oppgaveRepository = oppgaveDao, historikkinnslagRepository = pgHistorikkinnslagRepository )) diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgavehenterTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgavehenterTest.kt index 449c51003..98745f453 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgavehenterTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgavehenterTest.kt @@ -11,7 +11,7 @@ import no.nav.helse.db.OppgavesorteringForDatabase import no.nav.helse.db.SaksbehandlerFraDatabase import no.nav.helse.db.SaksbehandlerRepository import no.nav.helse.db.TotrinnsvurderingFraDatabase -import no.nav.helse.db.TotrinnsvurderingRepository +import no.nav.helse.db.TotrinnsvurderingDaoInterface import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering import no.nav.helse.modell.oppgave.Egenskap import no.nav.helse.modell.oppgave.EgenskapDto @@ -187,7 +187,7 @@ class OppgavehenterTest { private fun totrinnsvurderingRepository( totrinnsvurdering: TotrinnsvurderingFraDatabase? = null - ) = object : TotrinnsvurderingRepository { + ) = object : TotrinnsvurderingDaoInterface { override fun hentAktivTotrinnsvurdering(oppgaveId: Long): TotrinnsvurderingFraDatabase? = totrinnsvurdering override fun oppdater(totrinnsvurderingFraDatabase: TotrinnsvurderingFraDatabase) {} override fun settBeslutter(oppgaveId: Long, saksbehandlerOid: UUID) = TODO("Not yet implemented")