Wpis z mikrobloga

Hej, robie strone w stylu wikipedii, czyli mam jakis artykul i chcialbym moc pozwolic uzytkownikom go edytowac. Ja jako moderator powinienem wybierac jakie zmiany dopuszczam a jakie nie oraz przechowywac historie wszystkich zmian (odrzuconych i zaakceptowanych). Wstepnie wyobrazam to sobie tak:
- ktos wchodzi na strone -> klika edytuj -> otwiera mu sie edytor z obecna zawartoscia strony
- wprowadza swoje zmiany, klika "przeslij do akceptacji" i ja jako administrator widze w bazie dla danego artykulu zmiane w polu "pendingChanges" (np. array przechowujacy {author: User, content: string} czyli wszystkie oczekujace zmiany oraz ich autorow.
- moge sobie porownac (np. uzywajac https://www.npmjs.com/package/react-diff-viewer) obie wersje (cos w stylu gita) i albo zaakceptowac albo odrzucic zmiane

Problem pojawia sie jesli np. rozni uzytkownicy zaproponuja rozne zmiany do tego samego artykulu i wtedy w pendingChanges mam dwie zmiany i nawet jak jedna zaakceptuje porownujac do obecnego artykulu (pierwsza ktora wplynela) to bedzie mi ciezko porownac ta druge zmiane bo ona jest oparta o artykul jeszcze sprzed pierwszej zmiany.

Jak to poprawnie rozwiazac? Jak mniej wiecej ustrukturyzowac baze danych zeby wygodnie przechowywac oczekujace i zaakceptowane zmiany i je porownywac? Bede wdzieczny za wszelkie sugestie dotyczace metodologii i potencjalnych bibliotek

#webdev
#informatyka
  • 3
@MrHedge: jesli chodzi o gotowce, to rozmaitych klonów wikipedii dla dowolnej technologii (js, php, z bazą, bez bazy itp) jest na pęczki i każdy obsługuje to o czym piszesz