Skip to content

Commit

Permalink
Ta i bruk denormaliserte felter i oppgavefelt_verdi_aktiv (steg 3) (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
tendestad authored Dec 18, 2024
1 parent ca9bd2d commit dca4fa4
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -260,13 +260,12 @@ class AktivOppgaveRepository(val oppgavetypeRepository: OppgavetypeRepository) {
return tx.run(
queryOf(
"""
select fd.ekstern_id as ekstern_id, o.ekstern_id as omrade, fd.liste_type, f.pakrevd, ov.verdi
select ov.feltdefinisjon_ekstern_id as ekstern_id, ov.omrade_ekstern_id as omrade, fd.liste_type, f.pakrevd, ov.verdi
from oppgavefelt_verdi_aktiv ov
inner join oppgavefelt f on ov.oppgavefelt_id = f.id
inner join feltdefinisjon fd on f.feltdefinisjon_id = fd.id
inner join omrade o on fd.omrade_id = o.id
inner join feltdefinisjon fd on f.feltdefinisjon_id = fd.id
where ov.oppgave_id = :oppgaveId
order by fd.ekstern_id
order by ov.feltdefinisjon_ekstern_id
""".trimIndent(),
mapOf("oppgaveId" to oppgaveId)
).map { row ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,13 +178,10 @@ class OppgaveQuerySqlBuilder(
query += """
${combineOperator.sql} ${if (operator.negasjonAv != null) "NOT" else "" } EXISTS (
SELECT 'Y'
FROM Oppgavefelt_verdi_aktiv ov
INNER JOIN Oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN Feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN Omrade fo ON (fo.id = fd.omrade_id)
FROM Oppgavefelt_verdi_aktiv ov
WHERE ov.oppgave_id = o.id
AND fo.ekstern_id = :feltOmrade$index
AND fd.ekstern_id = :feltkode$index
AND ov.omrade_ekstern_id = :feltOmrade$index
AND ov.feltdefinisjon_ekstern_id = :feltkode$index
AND
""".trimIndent()

Expand Down Expand Up @@ -268,12 +265,9 @@ class OppgaveQuerySqlBuilder(
${combineOperator.sql}$invertertOperator EXISTS (
SELECT 'Y'
FROM Oppgavefelt_verdi_aktiv ov
INNER JOIN Oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN Feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN Omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND fo.ekstern_id = :feltOmrade$index
AND fd.ekstern_id = :feltkode$index
AND ov.omrade_ekstern_id = :feltOmrade$index
AND ov.feltdefinisjon_ekstern_id = :feltkode$index
)
""".trimIndent()
}
Expand Down Expand Up @@ -325,12 +319,9 @@ class OppgaveQuerySqlBuilder(
, (
SELECT $typeConversion
FROM Oppgavefelt_verdi_aktiv ov
INNER JOIN Oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN Feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN Omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND fo.ekstern_id = :orderByfeltOmrade$index
AND fd.ekstern_id = :orderByfeltkode$index
AND ov.omrade_ekstern_id = :orderByfeltOmrade$index
AND ov.feltdefinisjon_ekstern_id = :orderByfeltkode$index
)
""".trimIndent()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,10 @@ class K9BeslutterTransientFeltutleder: TransientFeltutleder{
$prefix EXISTS (
SELECT 1
FROM oppgavefelt_verdi_aktiv ov
INNER JOIN oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN oppgavetype ot ON (ot.id = f.oppgavetype_id)
INNER JOIN feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND fo.ekstern_id = 'K9'
AND fd.ekstern_id = 'løsbartAksjonspunkt'
AND (ot.ekstern_id in ('k9sak','k9klage') AND ov.verdi = '5016' OR ot.ekstern_id = 'k9tilbake' AND ov.verdi = '5005')
AND ov.omrade_ekstern_id = 'K9'
AND ov.feltdefinisjon_ekstern_id = 'løsbartAksjonspunkt'
AND (ov.oppgavetype_ekstern_id in ('k9sak','k9klage') AND ov.verdi = '5016' OR ov.oppgavetype_ekstern_id = 'k9tilbake' AND ov.verdi = '5005')
)
""".trimIndent()
return SqlMedParams(query, mapOf())
Expand All @@ -38,14 +34,10 @@ class K9BeslutterTransientFeltutleder: TransientFeltutleder{
COALESCE((
SELECT true
FROM oppgavefelt_verdi_aktiv ov
INNER JOIN oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN oppgavetype ot ON (ot.id = f.oppgavetype_id)
INNER JOIN feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND fo.ekstern_id = 'K9'
AND fd.ekstern_id = 'løsbartAksjonspunkt'
AND (ot.ekstern_id in ('k9sak','k9klage') AND ov.verdi = '5016' OR ot.ekstern_id = 'k9tilbake' AND ov.verdi = '5005')
AND ov.omrade_ekstern_id = 'K9'
AND ov.feltdefinisjon_ekstern_id = 'løsbartAksjonspunkt'
AND (ov.oppgavetype_ekstern_id in ('k9sak','k9klage') AND ov.verdi = '5016' OR ov.oppgavetype_ekstern_id = 'k9tilbake' AND ov.verdi = '5005')
), false) $order
""".trimIndent()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,6 @@ abstract class LøpendeDurationTransientFeltutleder(
WHERE EXISTS (
SELECT 'Y'
FROM Oppgavefelt_verdi_aktiv ov
INNER JOIN Oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN Feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN Omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND ov.verdi = 'true'
AND $løpendeOppgavetidHvisTrueSql
Expand All @@ -104,9 +101,6 @@ abstract class LøpendeDurationTransientFeltutleder(
) - (
SELECT CAST(ov.verdi AS timestamp)
FROM Oppgavefelt_verdi_aktiv ov
INNER JOIN Oppgavefelt f ON (f.id = ov.oppgavefelt_id)
INNER JOIN Feltdefinisjon fd ON (fd.id = f.feltdefinisjon_id)
INNER JOIN Omrade fo ON (fo.id = fd.omrade_id)
WHERE ov.oppgave_id = o.id
AND ${områdeOgKodeSql(områdeOgKode)}
)
Expand All @@ -128,7 +122,7 @@ abstract class LøpendeDurationTransientFeltutleder(
}

private fun områdeOgKodeSql(områdeOgKode: OmrådeOgKode) =
"fo.ekstern_id = '${områdeOgKode.område}' AND fd.ekstern_id = '${områdeOgKode.kode}'"
"ov.omrade_ekstern_id = '${områdeOgKode.område}' AND ov.feltdefinisjon_ekstern_id = '${områdeOgKode.kode}'"

override fun hentVerdi(input: HentVerdiInput): List<String> {
var løpendeDuration = Duration.ZERO
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

alter table oppgavefelt_verdi_aktiv alter column omrade_ekstern_id set not null;
alter table oppgavefelt_verdi_aktiv alter column feltdefinisjon_ekstern_id set not null;
alter table oppgavefelt_verdi_aktiv alter column oppgavetype_ekstern_id set not null;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

create index idx_oppgavefelt_verdi_aktiv_denorm_1 on oppgavefelt_verdi_aktiv(oppgave_id, omrade_ekstern_id, feltdefinisjon_ekstern_id);
create index idx_oppgavefelt_verdi_aktiv_denorm_2 on oppgavefelt_verdi_aktiv(oppgave_id, verdi);
create index idx_oppgavefelt_verdi_aktiv_denorm_3 on oppgavefelt_verdi_aktiv(oppgave_id, omrade_ekstern_id, feltdefinisjon_ekstern_id, oppgavetype_ekstern_id, verdi);
create index idx_oppgavefelt_verdi_aktiv_denorm_4 on oppgavefelt_verdi_aktiv(feltdefinisjon_ekstern_id, verdi);

0 comments on commit dca4fa4

Please sign in to comment.