Изменения

BugzillaORM

1694 байта добавлено, 21:24, 23 июля 2012
м
Проект супер-объектного-ядра
Таким образом наш трекер превратится, по сути, в модульное приложение, построенное вокруг очень прокачанного автоинтерфейса полей и объектов. Естественно, это уже не Bugzilla ни разу, но зато чем-то похоже на [http://roundup.sourceforge.net/ Roundup] — «конструктор трекеров». Однако и с ним различий много — roundup не умеет зависимых селект-полей, модель задаётся в коде, права доступа слабые, поиск слабый.
 
=== Обновление модели ===
 
Обновление базы багзильское (тупая последовательность операций):
* (+) Очевидный порядок обновлений, нет проблем с их зависимостями друг от друга (новые просто дописываются в конец, порядок всегда правильный)
* (-) Не проверяется, корректна ли схема БД после обновлений
* (-) Обновления задаются именно для SQL БД, а не для метамодели
* (-) Не очень красивая портянка в функции обновления БД
 
Обновление базы наше:
* AddType -> RenameFields -> AddFields -> ChangeFields -> DropFields
* ChangeFields с помощью функций обновления
* После каждого шага запуск хука
* Переименования задаются декларативно
* Возможность Dry Run, просмотра и проверки последовательности обновлений
* Зависимости обновлений в рамках каждого шага можно задать декларативно (хотя ситуация редкая)
*: А может, просто стоит задавать их в ассоциативном массиве по порядку
* Ещё может быть, что обновление одного типа зависит от обновления другого (причём это уже более частая ситуация)
=== Модель ===