Aktor id backend (#31)

* 🚧 Frontend sender AktørID til backend

WIP: Database og backend takler ikke lange tall (må finne alternativ datatype til int)


* 🐛 Endret datatype på aktorid i database til BIGINT

* 🍱 Lagring av valgfri aktørid i database

*  Aktørid vises på feilmeldinginnhold i frontend

* 🎨 Fjernet ubrukte logs, rettet grammatikk, fikset typing på aktorid frontend

---------

Co-authored-by: Amalie Mansåker <amalie.erdal.mansaker@nav.no>
This commit is contained in:
Markus A. R. Johansen 2023-08-04 12:41:24 +02:00 committed by GitHub
parent ebd9e0105b
commit 13a3ee415d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 35 additions and 24 deletions

View file

@ -1,5 +1,6 @@
package no.nav.helse.sprik.db
import no.nav.helse.sprik.db.FeilmeldingTable.aktorid
import no.nav.helse.sprik.db.FeilmeldingTable.arbeidsstatus
import no.nav.helse.sprik.db.FeilmeldingTable.beskrivelse
import no.nav.helse.sprik.db.FeilmeldingTable.dato
@ -15,6 +16,7 @@ import org.jetbrains.exposed.sql.transactions.transaction
class FeilmeldingRepository {
fun lagre(feilmelding: Feilmelding) {
transaction {
FeilmeldingTable.run {
insert {
@ -23,6 +25,10 @@ class FeilmeldingRepository {
it[FeilmeldingTable.dato] = feilmelding.dato
it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus
it[FeilmeldingTable.haster] = feilmelding.haster
if (feilmelding.aktorid != null){
it[FeilmeldingTable.aktorid] = feilmelding.aktorid
}
}
}
}
@ -35,7 +41,8 @@ class FeilmeldingRepository {
dato = rad[dato],
arbeidsstatus = rad[arbeidsstatus],
haster = rad[haster],
kommentar = rad[kommentar]
kommentar = rad[kommentar],
aktorid = rad[aktorid]
)
fun hentAlleFeilmeldinger(): List<Feilmelding> = transaction {

View file

@ -11,4 +11,5 @@ object FeilmeldingTable : Table("feilmelding") {
val arbeidsstatus = integer("arbeidsstatus")
val haster = bool("haster")
val kommentar = text("kommentar")
val aktorid = long("aktorid")
}

View file

@ -20,7 +20,8 @@ class Feilmelding(
val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX
val arbeidsstatus: Int,
val haster: Boolean,
val kommentar: String?
val kommentar: String?,
val aktorid: Long?
//val bilde: String,
) {
override fun toString(): String {

View file

@ -68,7 +68,6 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
}
put("/api/oppdaterfeil") {
val oppdatertFeilmelding = call.receive<Feilmelding>()
println(oppdatertFeilmelding)
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
call.respond(status = HttpStatusCode.Created, message = "Feilmelding oppdatert")
}

View file

@ -0,0 +1 @@
ALTER TABLE feilmelding ADD aktorid INT

View file

@ -0,0 +1,2 @@
ALTER TABLE feilmelding
ALTER COLUMN aktorid TYPE BIGINT

View file

@ -22,11 +22,11 @@ fun main() {
private fun oppretteMockData() {
val feilmeldingRepository = FeilmeldingRepository()
feilmeldingRepository.lagre(Feilmelding(null, "Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false, null))
feilmeldingRepository.lagre(Feilmelding(null, "Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false, null))
feilmeldingRepository.lagre(Feilmelding(null, "Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false, null, null))
feilmeldingRepository.lagre(Feilmelding(null, "Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true, null, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false, null, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true, null, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true, null, null))
feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false, null, null))
feilmeldingRepository.oppdaterKommentar(1, "Test kommentar")
}

View file

@ -34,7 +34,7 @@ class FeilmeldingTest {
@BeforeEach
fun lagreFeilmelding() {
val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true, null)
val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true, null, null)
feilmeldingRepository.lagre(feilmelding)
}
@ -109,7 +109,7 @@ class FeilmeldingTest {
}
@Test
fun `Oppdaterer en feilmelding`() {
val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null)
val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null, null)
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
val actualOppdatert = transaction { FeilmeldingTable.selectAll().single() }
assertEquals("Oppdatert", actualOppdatert[FeilmeldingTable.tittel])

View file

@ -63,6 +63,7 @@ const FeilKort = (props: IFeilKort) => {
setVisModal={setVisModal}
reset={props.reset}
kommentar={props.kommentar}
aktorId={props.aktorId}
/>
:
<FeilmeldingsInnhold
@ -76,8 +77,9 @@ const FeilKort = (props: IFeilKort) => {
setRedigeringsmodus={setRedigeringsmodus}
reset={props.reset}
kommentar={props.kommentar}
aktorId={props.aktorId}
>
<p>Her kommer det content</p>
<p>aktorId: {props.aktorId}</p>
</FeilmeldingsInnhold>
}
</FeilModal>

View file

@ -25,6 +25,7 @@ const KortKonteiner = (props: IKortKonteiner) => {
haster={feilMelding.haster}
reset={props.reset}
kommentar={feilMelding.kommentar}
aktorId={feilMelding.aktorid}
/>
))
}

View file

@ -18,9 +18,7 @@ export default function Home() {
* Henter alle feilmeldinger fra backend.
* Bruker endepunktet /api/hentallefeil.
*/
const hentAlleFeil = async () => {
console.log("hentAlleFeil");
const hentAlleFeil = async () => {
await axios.get("/api/hentallefeil")
.then(data => data.data)
.then(feil => {

View file

@ -11,6 +11,7 @@ export interface IFeilmelding {
arbeidsstatus: number
haster: boolean
kommentar?: string
aktorId?: number
}
export interface FeilmeldingsInnholdInterface extends IFeilmelding {
@ -28,6 +29,7 @@ export class Feilmelding implements IFeilmelding {
arbeidsstatus: number = 0
haster: boolean = false
kommentar?: string = undefined
aktorid?: number = undefined
/**
* Typescript 2.1 syntax som lar deg sende inn et JSON object og mappe det til class.
@ -42,6 +44,7 @@ export class Feilmelding implements IFeilmelding {
arbeidsstatus: number
haster: boolean
kommentar: string
aktorId: number
}) {
if (fields) Object.assign(this, fields);
}

View file

@ -15,13 +15,9 @@ export default function Feil() {
const [status, setStatus] = useState(0)
const [haster, setHaster] = useState(false)
const [valgteTags, setValgteTags] = useState([] as string[]);
const [aktørId, setAktørId] = useState("");
console.log(aktørId);
const [aktorid, setAktorid] = useState<number|null>(null);
const handleSubmit = () => {
const payload = {
id: null,
tittel: tittel,
@ -29,9 +25,9 @@ export default function Feil() {
dato: new Date().toISOString().replace('Z', ''), // Litt wack fix, burde endres
arbeidsstatus: 0,
haster: haster,
kommentar: null
kommentar: null,
aktorid: aktorid ? aktorid : null,
//kategorier: valgteTags
//aktørId: aktørId
}
axios.post("/api/nyfeil", payload, {
@ -118,8 +114,8 @@ export default function Feil() {
<Skillelinje/>
<TextField
label="Aktør-ID (valgfritt)"
description="Legg ved Aktør-ID om det er relevant"
onChange={e => setAktørId(e.target.value)}
description="Legg ved aktør-ID om det er relevant"
onChange={e => setAktorid(parseInt(e.target.value))}
/>
<Skillelinje/>