Hej w mojej aplikacji React mam dane zagniezdzone dane (nazwijmy to kiazką
z rozdziałami
) ktore w bazie wygladaja jak nizej (postgresql)
Używam ich w moim komponencie draggable-tree
gdzie mogę je sobie swobodnie usuwać, dodawać, zagniezdzac i zmieniać kolejność. Zagniezdzanie odbywa sie poprzez updateowanie parentId
. W chwili obecnej sortowanie odbywa sie zgodnie z kolejnoscia w jakiej dane zostaly zaladowane. Mniej wiecej dziala to tak:
- zaladuj cale dane - kazdy element ma dodatkowo relacje do np. komentarzy, opinii, historii edycji (jak zmieniala sie wartosc
content
w czasie) takze jesli drzewo sie rozrosnie to troche tych danych jest ladowane (nie znam sie na bazach wiec nie wiem jak np. pobieranie/zapisywanie 40 artukyłów gdzie kazdy z nich ma 3 strony tekstu + 10 komentarzy moze byc czasochlonne) - stworz drzewko i edytuj je w React (dodaj elementy, przenies itp)
- nowo otrzymane drzewo zapisz do bazy co automatycznie usuwa poprzednie dane
Ogolnie chce moc wykonac 3 operacje:
- dodawanie/usuwanie rozdzialu - tutaj moglbym po prostu zapisac nowy
rozdzial
w bazie rozdziałów (lub usunac). To nie ingeruje w pozostale rozdzialy wiec nie ma potrzeby zapisywania reszty - edytowanie obecnych rozdziałów - jak wyzej, wystarczyloby zupdateowac konkretny rozdzial w bazie
- przenoszenie rozdziałów - to jest glowny powod dla ktorego obecnie zapisuje od razu cale drzewo. Alternatywa byloby sortowanie drzewa po
contentId
. Czyli jesli mam np.rozdzial 1
,rozdzial 2
irozdzial 3
z id odpowiednio1
,2
,3
, to jesli chcialbym przeniesrozdzial 1
do srodka to moglbym ustawic jegocontentId
na srednia z id rozdziałów pomiedzy nim (czyli rozdzialu2
i3
czyli2.5
). Wtedy znowu nie musialbym ingerowac w pozostale rozdzialy.
Czy powyzsze ma sens czy sa lepsze metody?