Gå til hovedinnhold

Legge til conditions i kjerneapiet

Conditions i kjerne-APIet kan blant annet brukes for å gjøre joins støtte datauthenting som ikke følger fremmednøklene i databasen eller for å returnere en filtrert tabell. Conditions ligger i [\kjerneapi-service\src\main\java\no\fellesstudentsystem\kjerneapi_service\conditions](https://gitlab.sikt.no/fs/fs-plattform/-/tree/main/kjerneapi-service/src/main/java/no/fellesstudentsystem/kjerneapi_service/conditions). Slik går du frem for å legge til en ny condition:

1 Opprett en passende java-klasse dersom den mangler

I dette eksempelet skal vi lage en condition som returnerer faktura for semesteravgift for en gitt semesterregistrering. Praksis til nå har vært at vi lager en javaklasse for tabellen til venstre i relasjonen, og putter alle conditions for denne tabellen inn i denne klassen. Importer tabellene som skal inngå i conditionen fra kjerneapiet, samt jOOQs condition-grensesnitt:

package no.fellesstudentsystem.kjerneapi_service.conditions;

import no.fellesstudentsystem.kjerneapi.tables.Fakturareskontro;
import no.fellesstudentsystem.kjerneapi.tables.Semesterregistrering;
import org.jooq.Condition;

class semesterregistreringConditions {

}

2 Legg til en metode for filtreringen du skal gjøre

package no.fellesstudentsystem.kjerneapi_service.conditions;

import no.fellesstudentsystem.kjerneapi.tables.Fakturareskontro;
import no.fellesstudentsystem.kjerneapi.tables.Semesterregistrering;
import org.jooq.Condition;

class SemesterregistreringConditions {

public static Condition semesterregistreringFakturaJoin (Semesterregistrering semesterregistrering, Fakturareskontro faktura) {
return semesterregistrering.PLNR.eq(faktura.PLNR)
.and(semesterregistrering.ARSTALL.eq(faktura.ARSTALL))
.and(semesterregistrering.TERMIN.eq(faktura.TERMIN))
.and(faktura.STATUS_SEMESTERAVGIFT.eq("J"));
}
}

Det er mulig å gjøre langt mer avanserte ting en dette i conditions. Blant annet er det mulig å legge inn argumenter i conditionen som tar imot en verdi fra APIet og filtrere basert på den. Eksempelvis kunne vi latt klienten bestemme om både betalt og ubetalte fakturaer skulle returneres her. Se for eksempel VurderingsenhetTerminCondition for et eksempel på bruk av brukerinput i conditionen.

Se også brukermanualen for jOOQ for mer informasjon om hvordan man kan bygge opp conditions.

Conditionen er nå klar og kan refereres til via GraphQL-skjemaet.