moro / indexer-common
A library that provides common classes for entities indexer
Requires
- php: >=7.1
- ext-json: *
- psr/container: 1.0.0
- psr/log: 1.0.0
Requires (Dev)
- codeception/assert-throws: ~1.0
- codeception/codeception: ~2.0
- codeception/specify: ~1.0
- codeception/verify: ~1.0
- doctrine/dbal: ~v2.6
- infection/infection: ~0.5
- moro/container7: ~1.4
- phing/phing: ~2.0
- symfony/config: ~v4.0
- symfony/dependency-injection: ~v4.0
- symfony/http-kernel: ~v4.0
README
Задачей данного пакета является создание индексов со сложными условиями, в том числе с теми что изменяются со временем. Примером может служить сущность с параметрами времени начала и окончания её активности. В зависимости от этого она может добавляться или удаляться из определённых индексов. В качестве второго примера будет индекс распределения сущностей по возрастной категории их авторов.
Для упрощения использования пакета в него добавлен компонент для хранения представлений сущности. Его использование позволяет получать по индексу не только идентификаторы сущностей но и конкретные их представления. Например, анонс материала, состоящий из картинки, заголовка, лида, автора, иконки автора. Это представление требует достаточно разной информации и, следовательно, когда оно уже подготовленно и его не надо формировать, мы получаем экономию ресурсов сервера.
Фасады
Предназначены для использования в приложении. Каждый из них используется как публичное API для конкретной задачи.
ServiceFacade
- фасад для использования библиотеки в приложении.BackendFacade
- API для фонового процесса (может быть расположен и на другом сервере).
Компоненты пакета
Accessory
- общие типажи (traits).Action
- классы определяющие порядок действий при вызове API методов.Bus
- адаптер внешней шины для обмена сообщениями между клиентским приложением и фоновым процессом сервиса.Configuration
- классы для создания дерева объектов по данным из некой конфигурации.Dispatcher
- менеджер событий пакета.Exception
- интерфейсы для дополнительной группировки исключений компонентов.Index
- компонент отвечающий за хранение, получение и обновление записей индексов.Integration
- классы для интеграции пакета с некоторыми DI контейнерами.Regulation
- менеджер определения принадлежности сущности к конкретным индексам и представлениям.Scheduler
- планировщик заданий на будущее время.Source
- компонент для взаимодействия с внешними источниками сущностей.Strategy
- набор стратегий вызовов действий для ServiceFacade (обращаться к хранилищу или к командной шине).Transaction
- вспомогательный компонент, отвечающий за транзакционность действий с хранилищами данных.View
- компонент отвечающий за формирование и хранение представлений сущности.
Интеграция
- Для начала необходимо определить или написать классы взаимодействия с адаптерами и хранилищами.
- После этого подключаем классы пакета к используемому DI контейнеру.
- Создаём тип сущности и пишем классы для работы с ней (нормализаторы, инструкции, представления).
- По необходимости добавляем декораторы и слушателей для компонентов пакета.
Version 0.7.2