API: suggestions [GET] tulee voida asettaa niin, että se palauttaa pyydettäessä vain hakuehtoihin ja rajauksiin sopivien ehdotusten kokonaismäärän #329
Esimerkiksi sivutusta frontin puolella rakennettaessa tämänhetkinen toteutus palauttaa kaikki lajitteluun sekä hakuehtoihin ja -rajauksiin liittyvät ehdotukset. Jos halutaan lazy-periaatteen mukaisesti rakentaa mielekäs sivutustoiminto front-endin puolella, täytyy olla mahdollista saada tietää em. hakuehtoihin liittyen vain ehdotusten määrä.
Kun ehdotusten määrä on tiedossa, voidaan tietoon perustuen rakentaa esimerkiksi sivutustoiminnot (ehdotusten määrä, sivujen määrä sekä sivulla näyettävien määrä muuttujina).
Mielekkäämpää on hakea listaussivua vaihdettaessa (esim "seuraava sivu"), aina vain yhdellä sivulla näytettävät ehdotukset kokonaisuudessa kerrallaan.
Tällä hetkellä hakee kaikkien hakutulokseen liittyvien ehdotusten kaikki tiedot. Tällaisen tietomäärän käsittely on,
responsea rakennettaessa hidasta
sivua vaihdettaessa hankalaa ja hidasta
monimutkaisuutta tuottavaa
tavoiteltavan teknisen arkkitehtuurin (tarkentuu myöhemmin) näkökulmasta tarpeetonta ja täysin turhaa.
Front-end tulisi pitää koodimäärältään mahdollisimman pienenä, selkeänä sekä muuten kokonaisuutena kevyenä ja lazy-periaatteella toimivana eli esimerkiksi tarvittavan tilatiedon määrä tulisi minimoida ja nykyinen greedy-toteutus ei tätä mahdollista, vaan aiheuttaa.
Lazy-haku mahdollistaa ennen kaikkea frontin puolella selkeyden ja yksinkertaisuuden (pienet hakuajat, ei tilatietoa), mutta parantaa myös vasteaikoja ja nopeutta yleisesti
Esimerkiksi sivutusta frontin puolella rakennettaessa tämänhetkinen toteutus palauttaa kaikki lajitteluun sekä hakuehtoihin ja -rajauksiin liittyvät ehdotukset. Jos halutaan lazy-periaatteen mukaisesti rakentaa mielekäs sivutustoiminto front-endin puolella, täytyy olla mahdollista saada tietää em. hakuehtoihin liittyen vain ehdotusten määrä.
Kun ehdotusten määrä on tiedossa, voidaan tietoon perustuen rakentaa esimerkiksi sivutustoiminnot (ehdotusten määrä, sivujen määrä sekä sivulla näyettävien määrä muuttujina).
Mielekkäämpää on hakea listaussivua vaihdettaessa (esim "seuraava sivu"), aina vain yhdellä sivulla näytettävät ehdotukset kokonaisuudessa kerrallaan.
Tällä hetkellä hakee kaikkien hakutulokseen liittyvien ehdotusten kaikki tiedot. Tällaisen tietomäärän käsittely on,
Front-end tulisi pitää koodimäärältään mahdollisimman pienenä, selkeänä sekä muuten kokonaisuutena kevyenä ja lazy-periaatteella toimivana eli esimerkiksi tarvittavan tilatiedon määrä tulisi minimoida ja nykyinen greedy-toteutus ei tätä mahdollista, vaan aiheuttaa.
Mahdollinen lähestymistapa teknisesti: 1) asetetaan SQLAchemyn modeleissa suggestions oletusarvoisesti lazyksi (https://docs.sqlalchemy.org/en/13/orm/loading_relationships.html) 2) tietokantahaun suorittavassa funktiossa (https://github.com/NatLibFi/Finto-suggestions/blob/master/api/api/logic/suggestions.py ja https://github.com/NatLibFi/Finto-suggestions/blob/master/api/api/logic/common.py) on oltava mahdollisuus valita että halutaanko pyydetyt asiat vain niiden lukumääränä vai sisältöineen (hakunopeus ei merkittävästi parane, jos funktio kuitenkin hakee kaikki tarvittavat ehdotukset kokonaisuudessaan, funktion pitää hakea vain lukumäärä. Viite: https://gist.github.com/hest/8798884)
Lazy-haku mahdollistaa ennen kaikkea frontin puolella selkeyden ja yksinkertaisuuden (pienet hakuajat, ei tilatietoa), mutta parantaa myös vasteaikoja ja nopeutta yleisesti