niedziela, 1 marca 2009

CMS Made Simple - kontynuacja

Chyba poświęcę cały dział dla CMSMS.

1. (nie)-zdecydowanie?

/**
* Insert the content in the db
:TODO: This function should return something
*/

2. Polecam zagłębić się w sposób obsługiwania hierarchii.

Model Content ma ku temu kilka właściwości: parent_id, hierarchy, id_hierarchy, hierarchy_path. O ile parent_id i id_hierarchy to rozwiązanie w postaci ścieżki zmaterializowanej, to reszta jest absolutnym nadmiarem.

hierarchy_path to ścieżka aliasów - może być, żeby zminimalizować lookup do bazy, ale nonses przy użyciu ORM-a z instance poolingiem.

Kompletnym nieporozumieniem jest kolumna hierarchy - zawiera index wpisu w hierarchii. Każda zmiana kolejności, miejsca w hierarchii jakiegokolwiek elementu wymaga przeliczenia indexów. Co gorsza pole hierarchy jest używane przez frontend do wybierania elementów podrzędnych. Toteż dwa rekordy z identyczną zawartością hierarchy powodują błędy wyświetlania. W moim przypadku kategoria bluzy zawierała również produkty z kategorii t-shirty.

Nie miałbym żadnych zastrzeżeń, gdyby:
- oprogramowanie miało jakiekolwiek end-user api
- baza danych posiadała by odpowiednie procedury lub triggery
- autorzy dowiedzieli się, czym są indexy unique (i klucze główne)

W tej chwili wynajduję funkcje "naprawiające" content i przepisuję je do mojego api w python, aby integracja przebiegała sprawnie.

0 komentarzy: