rollun-com/rollun-datastore 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rollun-com/rollun-datastore

最新稳定版本:11.3.0

Composer 安装命令:

composer require rollun-com/rollun-datastore

包简介

Datastore

README 文档

README

rollun-datastore - это библиотека, которая предоставляет единый интерфейс взаимодействие с любым хранилищем данных на основе Resource Query Language (RQL). Существующие реализации: DbTable (для таблицы бд), CsvBase (для csv файлов), HttpClient (для внешнего ресурса через http), Memory (для RAM).

Краткая таблица операций

Операция HTTP RQL (в query) Тело запроса Примечания Заголовки и атрибуты запроса Ограничения и известные проблемы
Создание записи (create) POST Нет Объект При коллизии ID поведение задаёт overwriteMode: false — ошибка; true — перезаписать существующую запись. Если PK указан и в path, и в body — приоритет у body. Опционально атрибут overwriteMode. Опционально атрибут primaryKeyValue. Если PK нет ни в body, ни в path, то попытка создания записи все равно произойдет для DbTable. Это может вызвать ошибку если PK не AUTO_INCREMENT. overwriteMode вызывает ошибку уровня deprecated для DbTable и по умолчанию имеет значение false
Множественное создание (multiCreate) POST Нет Массив объектов Пакетное создание. Обработчик вызывает multiCreate реализации. DbTable: атомарная транзакция, требуется PK в каждой записи; DataStoreAbstract: последовательные create() (не атомарно, ошибки игнорируются); HttpClient: требует поддержку сервера (X_MULTI_CREATE).
Получение записи (read) GET Нет Требуется ID (в path). Требуется атрибут primaryKeyValue
Поиск (query) GET Обязателен Атрибут primaryKeyValue должен отсутствовать
Обновление записи (update) PUT Нет Объект ID обязателен; если указан и в path, и в body — приоритет у body. Upsert при overwriteMode = true (создать, если записи нет). Опционально атрибут overwriteMode. Опционально атрибут primaryKeyValue. overwriteMode вызывает ошибку уровня deprecated для DbTable и по умолчание имеет значение false. Согласно стандартам, частичное обновление записи должно выполнятся методом PATCH - об этом известно.
Множественное обновление (multiUpdate) PUT Нет Массив объектов Пакетное обновление. Обработчик вызывает multiUpdate реализации. DbTable: атомарная транзакция, все записи должны существовать, дубли ID запрещены; DataStoreAbstract: последовательные update() (не атомарно, ошибки игнорируются); HttpClient: требует поддержку сервера (X_MULTI_UPDATE).
Обновление по фильтру (queriedUpdate) PATCH Обязателен Объект Требуется наличие limit в RQL; нельзя select/groupBy; без PK (первичный ключ) в body. Атрибут primaryKeyValue должен отсутствовать Для DbTable обновление по фильтру выполняется с помощью SELECT FOR UPDATE.
Удаление (delete) DELETE Нет Требуется ID (в path). Требуется атрибут primaryKeyValue. Для DbTable переданный в запросе PK быть либо типа integer, либо double, либо string.
Удаление по фильтру (queriedDelete) В данный момент не реализовано
Удаление всех записей (deleteAll) В данный момент не реализовано
Получение метаданных (getIdentifier) HEAD Нет Метаданные/хедеры по PK. Заголовки возвращаются в формате X_OPE_RATION и т.д.
Загрузить контент в CSV файле GET Можно При экспорте RQL-ограничение limit(...) принудительно снимается обработчиком CSV, поэтому возвращается весь контент датастора. Требуется заголовок download со значением csv В данный момент ситуация с limit это баг и о нём известно. Требуемый заголовок также в дальнейшем будет изменен согласно стандартам (Accept: text/csv).
Refresh (если поддерживается) PATCH Нет Только для датасторов с RefreshableInterface.
Пересоздание записи (rewrite) В данный момент не реализовано
Множественное пересоздание (multiRewrite) В данный момент не реализовано

Примечания к таблице

Атрибут overwriteMode

Это атрибут запроса ($request->getAttribute('overwriteMode')), булев флаг, который middleware RequestDecoder устанавливает на основании заголовка If-Match. Если заголовок равен * (If-Match: *) — значение true; при любом другом значении или отсутствии заголовка — false. Он задает поведение при конфликте/отсутствии записи.

CSV и LIMIT

При экспорте CSV обработчик принудительно снимает/заменяет клиентский limit(...) на «без ограничений», поэтому выгружается всё (это поведение реализовано в CSV-хендлере).

Атрибут primaryKeyValue

Это атрибут запроса ($request->getAttribute('primaryKeyValue')), строковый PK записи, который middleware ResourceResolver извлекает из роут-параметра id или из последнего сегмента пути /api/datastore/{resourceName}/{id} (после rawurldecode(...)). Если ID не задан — null.

Расширенный формат таблицы выше

Для сторонних клиентов

В DataStore используется дополненная версия rawurlencode. К перечню стандартных символов добавлены следующие преобразования

  • - => %2D
  • _ => %5F
  • . => %2E
  • ~ => %7E

统计信息

  • 总下载量: 10.26k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 10
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: proprietary
  • 更新时间: 2017-01-11