Изменения

Перейти к: навигация, поиск

BugzillaORM

1194 байта добавлено, 22:31, 5 марта 2012
м
Нет описания правки
В Bugzilla половина кода в шаблонах, половина на основе полу-ORM’а Bugzilla::Object. Большая часть — говнокод. С одной стороны — ORM бы туда, было бы классно, НО! ORM мало, и нужен не он! Все (существующие) ORM-движки — это просто объектный интерфейс к базе данных. А нужно некое объектное ядро, которое бы позволяло создавать свои объекты, с полями различных типов, в том числе и ссылающимися на другие такие же объекты, с возможностью приписывания специальных особенностей полю, с общим механизмом хранения истории и с автоматическим базовым CRUD-интерфейсом.
 
Есть сущности:
* баг
* классификация, продукт, компонент
* тег (ключевое слово / keyword), milestone, версия, статус бага, agreement (пример кастомного поля)
* вложение, комментарий, флаг, тип флага
* пользователь, группа
* если таки будет ядро - ещё появляется метакласс сущности, объекты которого описывают типы сущностей
<graph>
</graph>
Есть сущности:* баг* классификацияПричём, продуктпонятное дело, если баг принадлежит к некоторому продукту (через компонент* тег (ключевое слово / keyword), то и его версия, milestone, версияagreement должны принадлежать к тому же продукту. Сейчас в Bugzilla это реализуется так - для каждой сущности, статус багасвязанной с багом, agreement (кастомное в баге есть "поле!)* вложение", комментарийа для ограничения значений полей поля делаются "зависимыми" от других полей. Из-за этого там куча костылей и, флагпо сути, тип флагаповесить зависимость на отличное от поля "продукт" поле невозможно.* пользователь, группа* как ни странно<div style="border: 3px solid red; padding: 8px">А подумав и посмотрев на красивую картинку выше, «сущность» — «метакласс» (класс мы приходим к другой идее - есть сущности), связи между ними и идея непротиворечивого состояния.</div>
У сущностей есть:

Навигация