Dodawanie/usuwanie wpisów - wątpliwości co do rozwiązania

0

Cześć
Dostaję w PUTcie w jednym z pól loginy użytkowników (będących w pewnej grupie, której nazwa jest również przesyłana) które mają być zapisane do newslettera i mają być one "aktualne", tzn. jak są nowe adresy to mam je dodać do newslettera, ale jeżeli w przesłanym polu nie ma loginu, który już jest to mam go skasować z bazy. Wykombinowałem w sumie najprostsze rozwiązanie problemu - usunąć rekordy z loginami użytkowników (na podstawie grupy), a potem dodać wszystko ponownie.
I moje pytanie jest może głupie, ale czy dane rozwiązanie jest "profesjonalne"? Bo to jednak usuwanie rekordów z bazy danych i trochę mnie to gryzie.

0

Ironia mode on
Pięknie, ale co to ma wspólnego z Javą? Oprócz tego że aplikacja jest pewnie napisana w Javie? Bardziej w dziale baz danych powinieneś pytać
Ironia mode off

Pytanie jak to często jest zmieniane i jak dużo jest użytkowników. Jak będziesz często usuwać i dodawać te same rekordy to tworzysz niepotrzebny ruch na bazie. Z drugi strony jak baza i tak nic nie robi to może nie być to problemem

0

To chyba nie jest do nas pytanie czy możesz usuwać rekordy :) druga sprawa dlaczego to jest PUT, a nie GET? Dodajesz/Nadpisujesz jakiś istniejący zasób?

0

@Charles_Ray chcesz zmieniać stan systemu GETem? o_O Wiesz ze GETa to przeglądarka może wysłać bez twojej wiedzy w ramach prefetcha? Albo nie wysłać w ogóle i wczytać stronę z cache. GET nie powinien powodować żadnych trwałych zmian! Jeśli w ogóle to pytanie tutaj czy to POST czy PUT, ale że to jest update to myśle że PUT.

@ornek z usuwaniem ryzykowne, bo jak potem dodasz sobie jakieś constrainty i nagle takie usunięcie usera spowoduje kaskadę innych zmian w bazie (np. anonimizacje wpisów zgodnie z GDPR)?

0

@Kamil Żabiński: Faktycznie to bardziej nadaje się do SQL, ale człowiek o 3 nad ranem pisał i średnio przytomny był :P

Okej, a jeżeli nie usuwanie wszystkich rekordów to jakie rozwiązanie byłoby dobre? Bo ja wykombinowałem coś takiego:

  • odczyt z bazy loginów skojarzonych z daną grupą;
  • rozdzielenie loginów z pola JSONa za pomocą String.split();
  • pętla: sprawdzenie czy dany login jest w liście pobranych z bazy za pomocą contains -> jak nie to dodanie do nowej listy [to są nowe loginy];
  • pętla : sprawdzenie czy dany login jest w liście pobranych z bazy za pomocą contains -> jeżeli tak to usunąć z listy pobranych [zostaną loginy do usunięcia]
  • pętla: usuwanie loginów z bazy;
  • pętla: dodawanie nowych loginów do bazy
    ... tylko dla mnie to trochę nieprzyjemne rozwiązanie, które może mieć negatywne skutki wydajnościowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1