Jesteś menegenren transformersów (z jakiegoś powodu autoboty i decepticony współpracują). Twoim głównym zajęciem jest prowadzenie ewidencji napraw robotów i skutków tych napraw. Należy podłączyc aplikację do API - zależy nam na sprawnym, periodycznym synchronizowaniu danych przy minimalnym obciążeniu serwera. Pobrane już dane wykorzystujemy wszędzie tam, gdzie mogą zostac wykorzystane.
API baseUrl
https://rod.codefray.net/api/v1/
- Pobieranie listy robotów i napraw + state management
- Dodawanie / edycja robotów + obsługa błędów
- Usuwanie robotów przez przeciągnięcie kafelka w lewo
- Ewaluacja
isActive
ibrokenBeyondRepair
dla robota na podstawie jego awarii + wizualna reprezentacja - Lista awarii z podziałem na archiwalne (ukończone), zaległe i aktywne
isActive
- robot, który nie ma aktywnej awarii oraz ostatnia awaria NIE ZAKOŃCZYŁA się NIEPOWODZENIEMbrokenBeyondRepair
- jeżeliisActive === false
i ostatnia awaria zakończyła się niepowodzeniem
Listy /transformers i /repairs skonstruowane są w ten sposób, że przyjmują opcjonalny parametr lastUpdate w formacie ISO8601.
https://rod.codefray.net/api/v1/transformers?lastUpdate=2021-01-01T00:00:00.000Z
{
data: Transformer[] | Repair[],
updated:Transformer[] | Repair[],
deleted: number[]
}
Jeżeli request zostanie wykonany bez tego parametru, wszystkie dostępne elementy znajdą się w data
.
Jeżeli parametr zostanie ustawiony, zwrócona zostanie różnica. W data
znajdą się elementy utworzone po lastUpdate,
w updated
elementy zaktualizowane po tym znaczniku, a w deleted
będzie lista id usuniętych elementów, których dotyczy endpoint po lastUpdate
GET(id), POST, PUT, DELETE
410 (GoneException) - rekord nie istniejePUT
409 (ConflictException) - obiekt pobrany o czasie T, ktoś inny zaktualizował o T+x, pobrany obiekt jest przestarzały
Gdy zapytanie pomyślnie przejdze walidację schemy, następuje dodatkowe sprawdzenie poprawności
w oparciu o stan danych na serwerze. W przypadku wykrycia nieprawidłowości serwer odpowie kodem 200 - w body
znajdzie się obiekt errors, gdzie kluczem będzie nazwa pola z body
którego dotyczy błąd oraz informacja o kodzie błędu
{
errors: {
name: { code: 'not-unique' }
}
}
Na liście transformersów potrzebujemy informację czy jest aktywny (czy nie posiada aktywnej awarii albo awarii zakończonej niepowodzeniem) - isActive
jeżeli nie jest aktywny i ostatnia awaria zakończyła się niepowodzeniem - oznacza to, że robot nie nadaje się do użytku (naprawa wykracza poza nasze możliwości) - brokenBeyondRepair
.
Obie informacje powinny zostać wizualnie zaprezentowane na kafelkach robotów