Skip to main content
Комментарий — это текстовая заметка с автором и произвольным дополнительным контекстом, которую можно прикрепить к любому объекту системы. Привязка устроена так же, как у остальных вложений. Все операции — просмотр, создание, изменение, удаление — выполняются строго в рамках текущей компании. Полный перечень полей — в глоссарии комментариев.

Логика

Из чего состоит комментарий:
Поле «Автор» никогда не задаётся клиентом вручную. При создании автор подставляется из текущего авторизованного пользователя (переданное клиентом значение игнорируется), а компания-владелец берётся из контекста текущей компании и в запросе вообще не принимается как поле.
Авторство комментария — настоящая связь с пользователем, а не просто записанное число: целостность гарантируется базой данных, сослаться на несуществующего пользователя невозможно. Если автора удалить, комментарий остаётся на месте, а его авторство становится неизвестным («без автора») — вместе с этим право на удаление такого комментария остаётся только у владельца компании. Фильтр по автору при этом продолжает работать по идентификатору: запрос по идентификатору удалённого пользователя просто вернёт пустой список, а не ошибку.
Кто может работать с комментариями. Все операции требуют авторизации — анонимный доступ невозможен.
  • Просмотр списка — доступен любому авторизованному пользователю. В ответ попадают только комментарии текущей компании.
  • Создание — доступно любому авторизованному пользователю.
  • Изменение и просмотр отдельного комментария — доступны любому авторизованному пользователю (в пределах комментариев текущей компании).
  • Удаление — разрешено только автору комментария либо суперпользователю компании.
Как формируется список. Список всегда ограничен текущей компанией; дополнительно его можно отфильтровать по автору (точное совпадение или список), по идентификатору родительского объекта (точное совпадение или список) и по типу объекта (по имени вида объекта, можно несколько значений). Список выдаётся без постраничного разбиения — возвращаются все подходящие записи, сначала самые новые.
При удалении компании все её комментарии удаляются автоматически. Аналогично, удаление самого типа объекта в системе влечёт удаление связанных с ним комментариев. Для быстрого поиска по компании и родительскому объекту предусмотрены служебные индексы, поэтому выборка комментариев конкретного объекта выполняется эффективно даже при большом их числе.