Add optional Algolia support

This commit is contained in:
Christopher C. Wells 2021-04-05 21:51:44 -07:00
parent 77ab6ae079
commit 63a3845417
9 changed files with 369 additions and 14 deletions

View File

@ -20,6 +20,12 @@ DB_PASSWORD=kcal
REDIS_HOST=redis
REDIS_PORT=6379
#SCOUT_DRIVER=null
#SCOUT_DRIVER=algolia
#ALGOLIA_APP_ID=
#ALGOLIA_SECRET=
SCOUT_DRIVER=elastic
ELASTIC_HOST=elasticsearch:9200
ELASTIC_PORT=9200

View File

@ -18,8 +18,14 @@ DB_PASSWORD=
REDIS_HOST=
REDIS_PORT=6379
SCOUT_DRIVER=elastic
ELASTIC_HOST=
SCOUT_DRIVER=null
#SCOUT_DRIVER=algolia
#ALGOLIA_APP_ID=
#ALGOLIA_SECRET=
#SCOUT_DRIVER=elastic
#ELASTIC_HOST=
MAIL_HOST=
MAIL_PORT=

View File

@ -11,6 +11,14 @@ namespace PHPSTORM_META {
*/
override(new \Illuminate\Contracts\Container\Container, map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -63,7 +71,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -211,6 +219,14 @@ namespace PHPSTORM_META {
]));
override(\Illuminate\Container\Container::makeWith(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -263,7 +279,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -411,6 +427,14 @@ namespace PHPSTORM_META {
]));
override(\Illuminate\Contracts\Container\Container::get(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -463,7 +487,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -611,6 +635,14 @@ namespace PHPSTORM_META {
]));
override(\Illuminate\Contracts\Container\Container::make(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -663,7 +695,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -811,6 +843,14 @@ namespace PHPSTORM_META {
]));
override(\Illuminate\Contracts\Container\Container::makeWith(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -863,7 +903,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -1011,6 +1051,14 @@ namespace PHPSTORM_META {
]));
override(\App::get(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -1063,7 +1111,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -1211,6 +1259,14 @@ namespace PHPSTORM_META {
]));
override(\App::make(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -1263,7 +1319,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -1411,6 +1467,14 @@ namespace PHPSTORM_META {
]));
override(\App::makeWith(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -1463,7 +1527,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -1611,6 +1675,14 @@ namespace PHPSTORM_META {
]));
override(\app(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -1663,7 +1735,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -1811,6 +1883,14 @@ namespace PHPSTORM_META {
]));
override(\resolve(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -1863,7 +1943,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,
@ -2011,6 +2091,14 @@ namespace PHPSTORM_META {
]));
override(\Psr\Container\ContainerInterface::get(0), map([
'' => '@',
'Algolia\AlgoliaSearch\AnalyticsClient' => \Algolia\AlgoliaSearch\AnalyticsClient::class,
'Algolia\AlgoliaSearch\SearchClient' => \Algolia\AlgoliaSearch\SearchClient::class,
'Algolia\ScoutExtended\Algolia' => \Algolia\ScoutExtended\Algolia::class,
'Algolia\ScoutExtended\Contracts\LocalSettingsRepositoryContract' => \Algolia\ScoutExtended\Repositories\LocalSettingsRepository::class,
'Algolia\ScoutExtended\Engines\AlgoliaEngine' => \Algolia\ScoutExtended\Engines\AlgoliaEngine::class,
'Algolia\ScoutExtended\Helpers\SearchableFinder' => \Algolia\ScoutExtended\Helpers\SearchableFinder::class,
'Algolia\ScoutExtended\Managers\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Algolia\ScoutExtended\Searchable\AggregatorObserver' => \Algolia\ScoutExtended\Searchable\AggregatorObserver::class,
'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class,
'CloudCreativity\LaravelJsonApi\Api\Repository' => \CloudCreativity\LaravelJsonApi\Api\Repository::class,
'CloudCreativity\LaravelJsonApi\Contracts\ContainerInterface' => \CloudCreativity\LaravelJsonApi\Container::class,
@ -2063,7 +2151,7 @@ namespace PHPSTORM_META {
'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class,
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class,
'Laravel\Scout\EngineManager' => \Algolia\ScoutExtended\Managers\EngineManager::class,
'Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface' => \CloudCreativity\LaravelJsonApi\Encoder\Parameters\EncodingParameters::class,
'Neomerx\JsonApi\Contracts\Http\Headers\HeaderParametersInterface' => \Neomerx\JsonApi\Http\Headers\HeaderParameters::class,
'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class,

View File

@ -16675,6 +16675,19 @@ namespace {
return $instance->unless($value, $callback, $default);
}
/**
*
*
* @see \Algolia\ScoutExtended\ScoutExtendedServiceProvider::registerMacros()
* @param array $array
* @param array|null $transformers
* @static
*/
public static function transform($array, $transformers = null)
{
return \Illuminate\Database\Eloquent\Builder::transform($array, $transformers);
}
/**
* Set the columns to be selected.
*

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Models\Food;
use App\Models\Recipe;
use App\Search\Ingredient;
use ElasticScoutDriverPlus\Builders\MultiMatchQueryBuilder;
use ElasticScoutDriverPlus\Builders\TermsQueryBuilder;
use Illuminate\Database\Eloquent\Collection;
@ -21,6 +22,7 @@ class IngredientPickerController extends Controller
$term = $request->query->get('term');
if (!empty($term)) {
$results = match (env('SCOUT_DRIVER')) {
'algolia' => $this->searchWithAlgolia($term),
'elastic' => $this->searchWithElasticSearch($term),
default => $this->searchWithDatabaseLike($term),
};
@ -29,6 +31,13 @@ class IngredientPickerController extends Controller
return response()->json($results->values());
}
/**
* Search using an Algolia service.
*/
private function searchWithAlgolia(string $term): Collection {
return Ingredient::search($term)->take(10)->get();
}
/**
* Search using an ElasticSearch service.
*/

View File

@ -2,6 +2,7 @@
namespace App\Providers;
use App\Search\Ingredient;
use CloudCreativity\LaravelJsonApi\LaravelJsonApi;
use Illuminate\Support\ServiceProvider;
@ -25,5 +26,9 @@ class AppServiceProvider extends ServiceProvider
public function boot()
{
LaravelJsonApi::defaultApi('v1');
if (env('SCOUT_DRIVER') === 'algolia') {
Ingredient::bootSearchable();
}
}
}

16
app/Search/Ingredient.php Normal file
View File

@ -0,0 +1,16 @@
<?php
namespace App\Search;
use Algolia\ScoutExtended\Searchable\Aggregator;
use App\Models\Food;
use App\Models\Recipe;
class Ingredient extends Aggregator
{
/**
* @inheritdoc
*/
protected $models = [Food::class, Recipe::class];
}

View File

@ -9,6 +9,8 @@
"ext-gd": "*",
"ext-json": "*",
"ext-mbstring": "*",
"algolia/algoliasearch-client-php": "^2.7",
"algolia/scout-extended": "^1.15",
"babenkoivan/elastic-migrations": "^1.4",
"babenkoivan/elastic-scout-driver": "^1.3",
"babenkoivan/elastic-scout-driver-plus": "^2.0",

212
composer.lock generated
View File

@ -4,8 +4,163 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "287f73afff6b4c135e8b89ce336c69e1",
"content-hash": "b404494454b0ff89c0db3d7eb87e3a44",
"packages": [
{
"name": "algolia/algoliasearch-client-php",
"version": "2.7.3",
"source": {
"type": "git",
"url": "https://github.com/algolia/algoliasearch-client-php.git",
"reference": "142a382e4649db0cb64d9eb8893872f1a4ba8dd3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/algolia/algoliasearch-client-php/zipball/142a382e4649db0cb64d9eb8893872f1a4ba8dd3",
"reference": "142a382e4649db0cb64d9eb8893872f1a4ba8dd3",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"php": "^5.3 || ^7.0 || ^8.0",
"psr/http-message": "^1.0",
"psr/log": "^1.0",
"psr/simple-cache": "^1.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"fzaninotto/faker": "^1.8",
"julienbourdeau/phpunit": "4.8.37",
"symfony/yaml": "^2.0 || ^4.0"
},
"suggest": {
"guzzlehttp/guzzle": "If you prefer to use Guzzle HTTP client instead of the Http Client implementation provided by the package"
},
"bin": [
"bin/algolia-doctor"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-2.0": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Algolia\\AlgoliaSearch\\": "src/"
},
"files": [
"src/Http/Psr7/functions.php",
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Algolia Team",
"email": "contact@algolia.com"
}
],
"description": "Algolia Search API Client for PHP",
"keywords": [
"algolia",
"api",
"client",
"php",
"search"
],
"support": {
"issues": "https://github.com/algolia/algoliasearch-client-php/issues",
"source": "https://github.com/algolia/algoliasearch-client-php/tree/2.7.3"
},
"time": "2020-12-22T11:27:03+00:00"
},
{
"name": "algolia/scout-extended",
"version": "v1.15.0",
"source": {
"type": "git",
"url": "https://github.com/algolia/scout-extended.git",
"reference": "f1da27101b4c88166f9d66d5110b46e1dacb8f1c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/algolia/scout-extended/zipball/f1da27101b4c88166f9d66d5110b46e1dacb8f1c",
"reference": "f1da27101b4c88166f9d66d5110b46e1dacb8f1c",
"shasum": ""
},
"require": {
"algolia/algoliasearch-client-php": "^2.7.3",
"ext-json": "*",
"illuminate/console": "^6.0|^7.0|^8.0",
"illuminate/contracts": "^6.0|^7.0|^8.0",
"illuminate/database": "^6.0|^7.0|^8.0",
"illuminate/filesystem": "^6.0|^7.0|^8.0",
"illuminate/support": "^6.0|^7.0|^8.0",
"laravel/scout": "^8.0",
"php": "^7.3|^8.0",
"riimu/kit-phpencoder": "^2.4"
},
"require-dev": {
"fakerphp/faker": "^1.13",
"laravel/legacy-factories": "^1.1",
"mockery/mockery": "^1.4",
"nunomaduro/larastan": "^0.6",
"orchestra/testbench": "^4.9|^5.9|^6.6",
"phpstan/phpstan": "^0.12.14",
"phpunit/phpunit": "^8.0|^9.0"
},
"suggest": {
"ext-dom": "Required to use the HTML Splitter."
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Algolia\\ScoutExtended\\ScoutExtendedServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Algolia\\ScoutExtended\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
},
{
"name": "Algolia Team",
"email": "contact@algolia.com"
}
],
"description": "Scout Extended extends Laravel Scout adding algolia-specific features",
"keywords": [
"algolia",
"analytics",
"extended",
"laravel",
"places",
"scout",
"search"
],
"support": {
"issues": "https://github.com/algolia/scout-extended/issues",
"source": "https://github.com/algolia/scout-extended/tree/v1.15.0"
},
"time": "2021-03-17T15:52:17+00:00"
},
{
"name": "asm89/stack-cors",
"version": "v2.0.3",
@ -4177,6 +4332,61 @@
},
"time": "2020-05-12T15:16:56+00:00"
},
{
"name": "riimu/kit-phpencoder",
"version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/Riimu/Kit-PHPEncoder.git",
"reference": "ca6f004e1290aec7ef4bebf6c0807b30fcf981d7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Riimu/Kit-PHPEncoder/zipball/ca6f004e1290aec7ef4bebf6c0807b30fcf981d7",
"reference": "ca6f004e1290aec7ef4bebf6c0807b30fcf981d7",
"shasum": ""
},
"require": {
"php": ">=5.6.0"
},
"require-dev": {
"phpunit/phpunit": "^9.4 || ^6.5 || ^5.7"
},
"suggest": {
"ext-gmp": "To convert GMP numbers into PHP code"
},
"type": "library",
"autoload": {
"psr-4": {
"Riimu\\Kit\\PHPEncoder\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Riikka Kalliomäki",
"email": "riikka.kalliomaki@gmail.com",
"homepage": "http://riimu.net"
}
],
"description": "Highly customizable alternative to var_export for PHP code generation",
"homepage": "http://kit.riimu.net",
"keywords": [
"code",
"encoder",
"export",
"generator",
"variable"
],
"support": {
"issues": "https://github.com/Riimu/Kit-PHPEncoder/issues",
"source": "https://github.com/Riimu/Kit-PHPEncoder/tree/v2.4.1"
},
"time": "2020-11-29T16:53:17+00:00"
},
{
"name": "spatie/eloquent-sortable",
"version": "3.11.0",