Skip to content

Latest commit

 

History

History
44 lines (36 loc) · 3.79 KB

README.ru.md

File metadata and controls

44 lines (36 loc) · 3.79 KB

Регистр накопления для couchdb и pouchdb

English version

Реализует виртуальные таблицы остатков и оборотов над хранящимися в couchdb или pouchdb данными, возвращает наборы записей вида:

Номенклатура Нач. остаток Приход Расход Кон. остаток
Фрукты 13 6 9 10
Яблоко 10 5 7 8
Груша 3 1 2 2
Номенклатура Нач. остаток Приход Расход Кон. остаток
Яблоко 10 4 7 7
Январь 10 1 2 9
Февраль 9 3 5 7

Как это работает

Результат виртуальной таблицы складывается из нескольких источников:

  • Map/reduce view с ключем вида {год, месяц, день, измерение1, измерениеN...} и ресуросм, накапливающим обороты по этому ключу (см. пример design-документа)
  • Предварительно рассчитанных на конец каждого месяца итогов. Таблицы итогов и маркер их актуальности - вспомогательный механизм. Если итоги не рассчитаны или неактуальны, система сформирует такой же в точности ответ, но потратит на его вычисление брльше времени. Подробнее про пересчет итогов см. здесь
  • Функции виртуальных таблиц принимают на вход селектор, близкий по синтаксису к mango-селектору couchdb. Данные остатков и оборотов фильтруются по описанным в селекторе правилам
  • Финальные вычисления делаются в ОЗУ, где к начальным остаткам подклеиваются обороты за период, рассчитываются итоги запрошенных группировок

HTTP API

Библиотека добавляет в API базы couchdb следующие endpoints:

  • POST /{db}/_totals/{view}, где view - имя design-документа для расчета оборотов
  • POST /{db}/_turnovers/{view}, где view - имя design-документа для расчета оборотов
  • POST /{db}/_totals_turnovers/{view}, где view - имя design-документа для расчета оборотов

В теле запроса следует передать JSON-объект следующей структуры:

  • selector (json) – JSON object describing criteria used to select documents. More information provided in the section on selector syntax. Required
  • limit (number) – Maximum number of results returned. Default is 25. Optional
  • skip (number) – Skip the first ‘n’ results, where ‘n’ is the value specified. Optional
  • sort (array) – JSON array following sort syntax. Optional
  • fields (array) – JSON array specifying which fields of each object should be
  • periodicity (enum) - периодичночть разворота итогов (для таблиц оборотов и остатков с оборотами)

JS API

Библиотека добавляет в прототип класса database pouchdb следующие методы:

  • totals, todo описать
  • turnovers, todo описать
  • totals_turnovers, todo описать