Библиотека позволяет предоставлять доступ к СУБД посредством HTTP-запросов.
Сделано на Sinatra
Используется в приложениях как прослойка. Пример использования в приложении на Sinatra:
use TablesController, { prefix: <префикс>, postprocess_block: <блок кода для обработки результатов перед формированием ответа> }
use ProceduresController, { prefix: <префикс>, postprocess_block: <блок кода для обработки результатов перед формированием ответа> }
Формирование SQL-запросов производится с помощью AREL
Разрешены методы GET, POST, PUT, DELETE и типы mime json, xml. Параметры запроса позволяют управлять ограничениями, списком выбора и сортировкой. Для запросов POST, PUT данные должны передаваться в теле запроса в формате, соответствующем типу mime запроса.
Соответствие параметров строки запроса структурам данных ruby:
x=<значение> - строка
x[]=<значение> - [<значение>]
x[value]=<значение> - { value: <значение> }
x[]=<значение1>&x[value]=<значение2> - некорректная комбинация
За список выбора отвечает параметр s. Примеры
tables/table_name
SELECT * FROM table
tables/table_name?s=name
SELECT name FROM table
tables/table_name?s[]=name&s[]=t
SELECT name, t FROM table
tables/table_name?s[name]=new_name&s[t]=t1
SELECT name AS new_name, t AS t1 FROM table
За сортировку отвечает параметр o. Примеры
tables/table_name?o=name
SELECT * FROM table ORDER BY name asc
tables/table_name?o[]=name&o[]=t
SELECT * FROM table ORDER BY name asc, t asc
tables/table_name?s[name]=desc&s[t]=asc
SELECT * FROM table ORDER BY name desc, t asc
За ограничения отвечает параметр q. Наименования параметров могут быть или предикатами условий AREL, или логическими операторами. Параметры обрабатываются в том порядке, в котором встречаются в строке запроса. Параметр может содержать вложенные значения для ключей and и or. Параметры на первом уровне трактуются как значения ключа со значением AND.
Более подробные примеры можно посмотреть здесь: Примеры
Процедуры вызываются по ссылкам вида /procedures/procedure_name
Параметры передаются или в строке, или в теле запроса в виде массива. Параметры, представляющие из себя объекты, будут переданы в процедуру как xml.