Skip to content

Conversation

nikitar
Copy link
Member

@nikitar nikitar commented Oct 8, 2026 •

Beskrivelse

I denne endringer rydder jeg opp backend-strukturen og sikrer separasjon av ansvar for videre utvikling av backend.

I steden for å ha en index.ts som gjør alt, så har vi nå denne flyen:

  1. Frontend (ulike felt som må fylles inn)
    ↓
  2. GraphQL typeDefs (definnerer hvilke spørring front kan sende inn mot back)
    ↓
  3. Resolvers (kolbingsmekaninisme mellom spørringer som front kjenner til og faktiske funksjoner som er implementert på backend)
    ↓
  4. Repositories (selve implementasjonen av funksjoner)
    ↓
  5. Drizzle (bruker sikker typebasserte Drizzle spørringer istedenfor ren SQL, Drizzle sender inn spørringen selv på vegne av oss)
    ↓
  6. MySQL (Faktiske spørringer som databasen forstår, Drizzle sikrer at databasen forstår dem :) )

Ny backend struktur:

Screenshot 2026-10-08 at 12 52 03

Drizzle

Fungerer nå som en mellom man mellom backend og databasen. For å oppnå dette måtte man endre på den ren mysql2 basserte strukturen. Dvs,

  • installere Drizzle ORM
  • schema.ts - som beskriver database strukturen med typescript, istedenfor ren sql med CREATE.
  • drizzle.config.ts - Inneholder konfigurasjon av Drizzle, dvs peke til riktig schema, og hvor migrations skal lagres
  • drizzle/ - Inneholder selve Migrations, som er bare Drizzle generer SQL database strukturer

MITRE-DATA

1.Før så opprettet import-mitre.ts både databasestrukturen og importerte data. Nå tar Drizzle ansvaret for databasestruktur.
2.Nå så er import-mitre.ts kun avsvarlig for å importere selve dataen(radene) inn i tabellen.

En endring er vel at nå har vi en ekstra attributt i hver Entitet, nemlig x_mitre_depricated av typen Boolean. Som diskutert på møtet

Repositories

Selve koden som spør databasen om info skal ligge under repositories/

GraphQL

Mappa er delt opp i:

typeDefs.ts - Beskriver API interfacet, altså hvilke queries backend lover til frontend
resolvers/ - Kobling mellom typeDefs og repositories.
index.ts - Samler resolverne i ett fil før index.ts sendes videre til Apollo Server

Oppdaterte Readme for databasen for å få den kobla gjennom Drizzle. Gjør relevante steg på nytt.

Jeg kommenterte kode så mye som mulig, så sjekk filene hvis det er noe som er uklart

Verifikasjon

Kjørte en eksempel kode under ThreatActors delen av backend. Og fikk ut data fra nye Drizzle "drevet" Database CyberDB

image image

Closes #36

KI deklarasjon

KI ble brukt til:

  • Installasjon av Drizzle, altså selve prosessen, kommandoene. Ved feil, så ble KI brukt til debugging
  • Forslag til backend-struktur. Ideene ble vurdert, og sluttvalget lå hos meg, bassert på min egen vurdering.
  • Forslag om å flytte ut connection til DB fra index.ts til en egen connection fil
  • KI ble brukt til å lære virkemåten og syntaxen for opprettelse av Drizzle.scheme.ts, likevel på bakgrunn av egen kunskap om SQL, så ble noen tabeller implementert rent av meg. Etter at syntaxen lå på plass, så ba jeg KI å fullføre resten
  • KI foreslo endringene i import-mitre.ts stegvis. Jeg implementerte endringene og gikk gjennom koden underveis for å forstå og verifisere hva den gjorde.
  • Ved hjelp av forklaringer fra KI, ble også docs/local-db-setup.md endret for at andre skal kunne implementere Drizzle "drevet" SQL database
  • KI foreslo strukturen for GraphQL (altså Defs -> Resolver -> Repository -> Drizzle -> DB), der hvor jeg implementerte grunnlaget for backend bassert på det.
  • Ettersom ikke mye research ble gjort rundt selve flyten mellom Frontend og Databasen, så ba jeg KI å generere en "eksempel" kode som ble plassert under ThreatActor relaterte filer i backend. Dette ble gjort for å gjøre teste forbindelsen med den nye Drizzle engine. Videre skal denne eksempel-koden erstattes med faktisk kode som vi bruker på nettsiden.

@nikitar nikitar requested a review from a team as a code owner October 8, 2026 11:17
Copy link
Member

@daniekba daniekba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Herlig arbeid! Fint at vi kan begynne på backend i større grad. Veldig fint med kommentarer!

@daniekba daniekba merged commit 62979ca into main Oct 8, 2026
@nikitar nikitar changed the title refactor backend structure and add Drizzle(36) Refaktorering av backend-struktur med Drizzle ORM Oct 18, 2026
@nikitar nikitar added the enhancement New feature or request label Oct 18, 2026
Sign in to join this conversation on GitHub.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Restrukturere backend og GraphQL struktur (uten særlig impl)
2 participants