Задача [0405]: Поддержка приведения типа к дате в API расширенного поиска

Формулировка проблемы: по задаче API42 был реализован расширенный поиск по формам/записям реестра, который принимает на входе псевдоSQL-запрос, где в качестве столбцов указываются компоненты формы. В зависимости от того, какие сравнения требуется производить в запросе, к именам компонентов можно добавить суффикс .TEXT либо .INT. Теперь, в дополнение к ним, необходимо реализовать интерпретацию компонента как даты (суффикс .DATE).

Связанные задачи: API42

Решение: необходимо реализовать обработку суффикса имени компонента .DATE как даты в формате yyyy-MM-dd hh:mm:ss - т.е. при составлении запроса (параметр query) необходимо будет приводить дату к этому формату.

Кроме этого, необходимо реализовать в запросах поддержку следующих операций с компонентами, приведёнными к дате: =, >, <, <=, >=, а также функций манипуляции с датами, которые поддерживает MySQL.

Входные и выходные метода rest/api/asforms/search/advanced в рамках реализации данной задачи не изменяются

Примеры запросов

Компоненты на форме:

  • date_col - дата

Запрос: получить все записи с датой, которая входит в последние 30 дней:

{
  "query": "WHERE TO_DAYS(NOW()) - TO_DAYS(`date_col.DATE`) <= 30",
  "parameters":   [ "date_col.DATE" ],
  "startRecord":      0,
  "recordsCount":     50,
  "showDeleted":      "true",
  "searchInRegistry": "true"
}