#API – Kolejna przebudowa

Mam kolejne problemy ze spójnością API. Wiedziałem, że będzie konieczność wprowadzenia jeszcze kilku zmian, ale nie sądziłem, że będą one aż tak spore. Trochę mnie podłamała ta sytuacja, ale nie takie przeszkody już miewałem. Jeśli nie wyrobię sie w 10 tygodniach, to mam nadzieję, że chociaż do końca trwania konkursu uda mi się dokończyć aplikację i będę z niej zadowolony. Jak mówi Łona, nie ma problemów bez rozwiązania, a jak nie ma rozwiązania to nie ma problemu :D.

Pierwszy problem, pojawił się już jakiś czas temu. Żeby móc pobierać nazwę klienta w liście dokumentów, połączyłem 2 tabele. Przez to pojawił się kolejny problem, ponieważ kontroler nie był dostosowany do tego połączenia i chociaż pobieranie danych działało, to dodawanie nowych dokumentów było niemożliwe. Postanowiłem, że połączę te tabele zwykłym JOIN, bez tworzenia relacji w Doctrine i będę miał trochę mniej roboty, a następnym razem lepiej to przemyślę.

Wszystko działało, tylko zapytanie zwracało mi wynik w trochę przerobionym formacie, co spowodowało, że pojawił się problem z wczytywaniem danych w Angularze. Przerobiłem template’y, ale znów okazało się, że nie działa zaznaczanie, ponieważ dane dokumentu są bardziej zagnieżdżone i trzeba się do nich głębiej dobierać. Musiałem znaleźć inne rozwiązanie.

Postanowiłem więc, że w zapytaniach DQL podam tylko te pola, które są mi potrzebne i wyświetlę je obok siebie, przez co uniknę zagnieżdżeń. To działa w porządku, ale pojawił się kolejny problem. Dla metod PUT i PATCH, potrzebne są obiekty pobrane z bazy, a zapytanie ze zdefiniowanymi polami zwraca tablicę, na której nie mogę np. wykonać metod set i get. Znalazłem więc inne rozwiązanie.

I tak chciałem w każdym repozytorium zdefiniować tylko te pola, które są mi potrzebne, ponieważ wtedy przy większej ilości danych baza jest wydajniejsza (przynajmniej tak mówił Damian Widera w DevTalku Maćka Aniserowicza). W takim wypadku, aby metody PATCH i PUT działały, muszę w każdym repozytorium dodać jedno dodatkowe zapytanie dla PATCH i PUT.

Coś czuję, że muszę zatrzymać na chwilę prace frontendowe i dopracować API. Jak widać, wiele rzeczy wyszło w praniu i spodziewałem się tego, ale nie wiedziałem, że przyjdzie mi aż tyle zmieniać. Cóż, trzeba zabrać się do pracy i mieć nadzieję, że nic więcej mnie nie zaskoczy w międzyczasie.

Jak można zauważyć, zmieniłem też wygląd bloga, ponieważ poprzedni od początku nie do końca mi przypasował, ale nie miałem czasu się tym zająć. Nowy szablon ma trochę więcej opcji i fajniej wygląda. Zauważyłem jedynie, że trochę długo się wczytuje przy pierwszym uruchomieniu, ale nie wiem z czym jest to związane. Muszę jeszcze tylko zająć się kilkoma detalami i będzie super.

Pozdrawiam!
MTK

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑