GraphQL rajapinnan listatyyppiset kentät ja non-nullability

59 views
Skip to first unread message

Vili Ketonen

unread,
Jun 5, 2023, 2:51:35 PM6/5/23
to rata.digitraffic.fi
Moi,

Nykyisellään GraphQL rajapinnassa tietotyypeillä, kuten Train, mitään "lista"-kenttätyyppejä ei ole määritetty non-nullableksi (ks. https://graphql.org/learn/schema/#lists-and-non-null). Esim. tyypillä Train on määritetty mm. seuraavat listatyypit:

Train - Fields:

...


...
Onko nämä tarkoituksella jätetty nullableksi? Tarkastellaan esim. tarkemmin Train tietotyypin timeTableRows-kenttää:
Yllä oleva määritys sanoo, että Train-tietotyypin timeTableRows-kenttä itsessään saattaa olla null. Lisäksi määritys sanoo, että timeTableRows-listassa voi olla null-elementtejä. Tämä on ristiriidassa Train-vastaustyypin kuvaksen kanssa sivulla https://www.digitraffic.fi/rautatieliikenne/#junat missä on määritetty että esim. timeTableRows-kenttä "Ei voi olla tyhjä". Voisin itse olettaa (tietämättä tarkemmin miten data on mallinnettu), että GraphQL rajapinnassa Train-tietotyypin timeTableRows-kenttä tulisi olla määritetty näin:
Huomatkaa non-nullable (!) merkinnät yllä. Tämä tarkoittaisi että Train-tietotyypin timeTableRows-lista ei voi olla null, ja listassa ei voi olla null-elementtejä.
Nämä non-nullable tiedot olisi erittäin hyödyllistä olla täsmällisiä GraphQL rajapintakuvauksessa, etenkin kun GraphQL rajapintakuvausta käytetään generoimaan automaattisesti client-kirjastot esim. TypeScriptille. Jos GraphQL-rajapintakuvaksesta jättää näissä lista-tyyppisissä kentissä määrittämättä non-nullable tietoa (silloin kun kenttä ei oikeasti voi olla koskaan tyhjä) niin client-koodissa joudutaan turhaan tarkistamaan etteivät tietotyypit ole null ennen niiden käyttöä, joka aiheuttaa lisäkompleksisuutta.
Terveisin,
Vili Ketonen

Jani Haakana

unread,
Jun 6, 2023, 7:38:59 AM6/6/23
to rata.digitraffic.fi
Hei Vili,

En äkkiseltään keksi miksi timeTableRows ja kumppanit ovat nullableja. Lisään meille työjonoon skeeman päivittämisen.

T. Jani

rata.digitraffic.fi

unread,
May 9, 2025, 8:41:04 AMMay 9
to rata.digitraffic.fi
Hei

Tähän on vihdoinkin tehty korjaus, josta erillinen postaus.

Ystävällisin terveisin / Best regards
– Digitraffic asiakastuki / Digitraffic support –
Reply all
Reply to author
Forward
0 new messages