Как использовать внешний API в качестве источника данных для сущности?
Ситуация: имеется внешний read-only API, в данный момент приложение взаимодействует с ним с помощью EightPointsGuzzleBundle. Мне хотелось бы работать с этими данными, как с сущностями Doctrine.
Правильно ли я понимаю, что для этого мне необходимо создать репозиторий, в котором реализовать методы find(), findAll() и т.д., использующие API для получения данных и уже в этих методах производить десериализацию?
Отлично. У меня возник ещё один вариант решения этой задачи.
На самом деле, если вытащить полностью все данные из этого API, то получится примерно 60мб. Это плоские данные, без ссылок, обновляются редко. Поэтому, у меня возникла мысль лить консольной командой через крон раз в сутки всю эту информацию в какую-нибудь монгу, и работать уже с ней. Наверное, такой вариант будет более предпочтительным, но я не уверен.
Вообще, смысл этой затеи в том, что данный API даёт фильтровать данные лишь по двум критериям, но мне нужна более сложная фильтрация.
В данный момент сделал следующее - поставил консольную команду в Cron и лью json в сущности с Batch Processing. В данный момент на обновление 7к записей ушло 70 секунд.
С многой не стал уже заморачиваться, всё что не лезет в обычные поля запихнул в @ORM\Column(type="json_document", nullable=true, options={"jsonb": true}) (использовал dunglas/doctrine-json-odm).