SAAB2017 / 3PP-tool

MAMF40 – Projekt årskurs 3
3 stars 2 forks source link

Fe pagination all #205

Closed theIDinside closed 6 years ago

theIDinside commented 6 years ago

Beskrivning

Bidrar med sidhämtningsfunktion, för att stegvis kunna hämta ut inkrementer av resultat, från databasen, via speciella parametrar till APIn.

API URI ser nu ut på följande vis: /components/?offset=X&amount=Ysort=Column&order=asc /licenses/?offset=X&amount=Ysort=Column&order=asc /products/?offset=X&amount=Ysort=Column&order=asc /projects/?offset=X&amount=Ysort=Column&order=asc

/components/search/?offset=X&amount=Ysort=Column&order=asc /licenses/search/?offset=X&amount=Ysort=Column&order=asc /products/search/?offset=X&amount=Ysort=Column&order=asc /projects/search/?offset=X&amount=Ysort=Column&order=asc

/components/pending/?offset=X&amount=Ysort=Column&order=asc /licenses/pending/?offset=X&amount=Ysort=Column&order=asc /products/pending/?offset=X&amount=Ysort=Column&order=asc /projects/pending/?offset=X&amount=Ysort=Column&order=asc

/components/pending/search/?offset=X&amount=Ysort=Column&order=asc /licenses/pending/search/?offset=X&amount=Ysort=Column&order=asc /products/pending/search/?offset=X&amount=Ysort=Column&order=asc /projects/pending/search/?offset=X&amount=Ysort=Column&order=asc

offset: antalet hittills hämtade element amount: antalet element från offset, som skall hämtas sort: kan anta följande värden: xName, xVersion, dateCreated, lastEdited (där x antingen är license, component, product, project)

Vid returnering av data från ett anrop till API'n, så skickas en payload struktur, som innehåller följande information:

{ // a default payload, can/should be extended
      items: [], // array av element returnerade från databasen
      links: {
        prev: `?offset=0&amount=${DEFAULTPAYLOADSIZE}`, // föregående inkrement av hämtning
        current: `?offset=0&amount=${DEFAULTPAYLOADSIZE}`, // nuvarande plats i databasen
        next: `?offset=0&amount=${DEFAULTPAYLOADSIZE}` // kommande element som ska hämtas
      },
      sort: {
        column: `&sort=${type}Name`, // default värdet för sortering är namn-kolumnen
        order: `&order=asc` // default värdet för ordning är stigande
      },
      meta: {
        current: int, // samma som offset-värdet i links.current
        count: int // totala mängden element i databasen som finns för den sökning / hämtning som gjorts
      },
      errors: {
        message: [], // meddelande vid eventuellt error
        status: string // status-meddelanden (används f.n. ej)
      },
      errorflag: bool // om ett error skett
    }
  }

Det är med hjälp av den returnerade payloaden som frontend, sedan kan anropa backend med rätt offset/amount osv, för att få efterkommande element osv. Inuti payload-objektet finns ett links-objekt som innehåller context-data som beskriver vart i databasen "man" befinner sig nu.

Ta bort alternativ som inte är relevanta.

Hur har detta blivit testat?

Tillsammans med teammedlem @sunnanv

Checklista: