Skip to content

Commit 72482e8

Browse files
authored
Merge pull request #10 from silverstripeltd/feature/version-3-silverstripe-6
v3: Silverstripe 6 support. Remove Enterprise Search dependency
2 parents 80f7bfa + 38be907 commit 72482e8

38 files changed

Lines changed: 2634 additions & 374 deletions

.github/workflows/main.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
name: CI
22

33
on:
4-
push:
54
pull_request:
5+
branches:
6+
- "main"
7+
- "1"
8+
- "2"
9+
- "release/**"
10+
- "feature/**"
11+
push:
12+
branches:
13+
- "main"
14+
- "1"
15+
- "2"
616
workflow_dispatch:
717

818
jobs:
919
ci:
10-
uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1
20+
uses: silverstripe/gha-ci/.github/workflows/ci.yml@v2
1121
with:
1222
# disable auto detection of JS tests (remove if any JS tests are added)
1323
js: false

_config/adaptors.yml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,15 @@ Only:
55
envvarset: 'BIFROST_QUERY_API_KEY'
66
---
77
SilverStripe\Core\Injector\Injector:
8-
# Adaptors provided by this module
98
SilverStripe\Discoverer\Service\Interfaces\QuerySuggestionAdaptor:
109
class: SilverStripe\DiscovererBifrost\Service\Adaptors\QuerySuggestionAdaptor
1110
SilverStripe\Discoverer\Service\Interfaces\SpellingSuggestionAdaptor:
1211
class: SilverStripe\DiscovererBifrost\Service\Adaptors\SpellingSuggestionAdaptor
13-
SilverStripe\Discoverer\Service\Interfaces\ProcessAnalyticsAdaptor:
14-
class: SilverStripe\DiscovererBifrost\Service\Adaptors\ProcessAnalyticsAdaptor
15-
# Adaptors provided by the ElasticEnterprise dependency
1612
SilverStripe\Discoverer\Query\Facet\FacetAdaptor:
17-
class: SilverStripe\DiscovererElasticEnterprise\Query\Facet\FacetAdaptor
13+
class: SilverStripe\DiscovererBifrost\Query\Facet\FacetAdaptor
1814
SilverStripe\Discoverer\Query\Filter\CriteriaAdaptor:
19-
class: SilverStripe\DiscovererElasticEnterprise\Query\Filter\CriteriaAdaptor
15+
class: SilverStripe\DiscovererBifrost\Query\Filter\CriteriaAdaptor
2016
SilverStripe\Discoverer\Query\Filter\CriterionAdaptor:
21-
class: SilverStripe\DiscovererElasticEnterprise\Query\Filter\CriterionAdaptor
17+
class: SilverStripe\DiscovererBifrost\Query\Filter\CriterionAdaptor
2218
SilverStripe\Discoverer\Service\Interfaces\SearchAdaptor:
23-
class: SilverStripe\DiscovererElasticEnterprise\Service\Adaptors\SearchAdaptor
24-
25-
SilverStripe\DiscovererElasticEnterprise\Service\Adaptors\BaseAdaptor:
26-
prefix_env_var: 'BIFROST_ENGINE_PREFIX'
19+
class: SilverStripe\DiscovererBifrost\Service\Adaptors\SearchAdaptor

_config/factory.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ Only:
44
envvarset: 'BIFROST_QUERY_API_KEY'
55
---
66
SilverStripe\Core\Injector\Injector:
7-
Elastic\EnterpriseSearch\Client.searchClient:
7+
Silverstripe\Search\Client\Client.searchClient:
88
factory: SilverStripe\DiscovererBifrost\Service\ClientFactory
99
constructor:
1010
host: '`BIFROST_ENDPOINT`'
1111
token: '`BIFROST_QUERY_API_KEY`'
12-
http_client: '%$GuzzleHttp\Client'
12+
httpClient: '%$GuzzleHttp\Client'

_config/requests.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

_config/service.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
Name: discoverer-bifrost-service
3+
After: discoverer-service
4+
---
5+
SilverStripe\Core\Injector\Injector:
6+
SilverStripe\Discoverer\Service\SearchService:
7+
constructor:
8+
indexPrefix: '`BIFROST_ENGINE_PREFIX`'

composer.json

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
"Filtering"
2222
],
2323
"require": {
24-
"php": "^8.1",
25-
"silverstripe/framework": "^5",
26-
"silverstripe/silverstripe-discoverer-elastic-enterprise": "^2",
27-
"guzzlehttp/guzzle": "^7.5"
24+
"php": "^8.3",
25+
"silverstripe/framework": "^6",
26+
"silverstripe/silverstripe-discoverer": "3.0.x-dev",
27+
"silverstripe/silverstripe-search-client-php": "0.0.7-alpha",
28+
"guzzlehttp/guzzle": "^7.9"
2829
},
2930
"require-dev": {
30-
"phpunit/phpunit": "^9.6.19",
31-
"slevomat/coding-standard": "^8.8"
31+
"phpunit/phpunit": "^11.3",
32+
"slevomat/coding-standard": "~8.18.0"
3233
},
3334
"autoload": {
3435
"psr-4": {
@@ -48,5 +49,10 @@
4849
"phpcs": "phpcs --standard=phpcs.xml --extensions=php --encoding=utf-8"
4950
},
5051
"minimum-stability": "dev",
51-
"prefer-stable": true
52+
"prefer-stable": true,
53+
"extra": {
54+
"branch-alias": {
55+
"dev-main": "3.0.x-dev"
56+
}
57+
}
5258
}

phpcs.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<file>src</file>
66
<file>tests</file>
77

8+
<!-- Don't sniff test classes, because they include PHP attributes that cause Slevomat to throw errors -->
9+
<exclude-pattern>./tests/*</exclude-pattern>
810
<!-- Don't sniff third party libraries -->
911
<exclude-pattern>./vendor/*</exclude-pattern>
1012
<exclude-pattern>*/thirdparty/*</exclude-pattern>
@@ -146,6 +148,8 @@
146148
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification"/>
147149
<exclude name="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingTraversableTypeHintSpecification"/>
148150
<exclude name="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingTraversableTypeHintSpecification"/>
151+
<!-- Leave the order up to us to decide -->
152+
<exclude name="SlevomatCodingStandard.Classes.ClassStructure.IncorrectGroupOrder"/>
149153
</rule>
150154

151155
<rule ref="SlevomatCodingStandard.Namespaces.UnusedUses">

phpunit.xml.dist

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit bootstrap="vendor/silverstripe/framework/tests/bootstrap.php" colors="true">
3-
<testsuites>
4-
<testsuite name="Default">
5-
<directory>tests</directory>
6-
</testsuite>
7-
</testsuites>
8-
<filter>
9-
<whitelist addUncoveredFilesFromWhitelist="true">
10-
<directory suffix=".php">src/</directory>
11-
<exclude>
12-
<directory suffix=".php">tests/</directory>
13-
</exclude>
14-
</whitelist>
15-
</filter>
2+
<phpunit
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
bootstrap="vendor/silverstripe/framework/tests/bootstrap.php"
5+
colors="true"
6+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.5/phpunit.xsd"
7+
cacheDirectory=".phpunit.cache"
8+
>
9+
<php>
10+
<env name="BIFROST_ENDPOINT" value="https://fakeplace.com" force="true"/>
11+
<env name="BIFROST_QUERY_API_KEY" value="fakeApiKey" force="true"/>
12+
</php>
13+
<testsuite name="Default">
14+
<directory>tests</directory>
15+
</testsuite>
16+
<source>
17+
<include>
18+
<directory suffix=".php">tests</directory>
19+
</include>
20+
</source>
1621
</phpunit>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace SilverStripe\DiscovererBifrost\Processors;
4+
5+
use SilverStripe\Core\Injector\Injectable;
6+
use SilverStripe\Discoverer\Query\Suggestion;
7+
use Silverstripe\Search\Client\Model\QuerySuggestionRequest;
8+
9+
class QuerySuggestionRequestProcessor
10+
{
11+
12+
use Injectable;
13+
14+
public function getRequest(Suggestion $suggestion): QuerySuggestionRequest
15+
{
16+
$request = new QuerySuggestionRequest();
17+
$request->setQuery($suggestion->getQueryString());
18+
19+
$limit = $suggestion->getLimit();
20+
$fields = $suggestion->getFields();
21+
22+
if ($limit) {
23+
$request->setSize($limit);
24+
}
25+
26+
if ($fields) {
27+
$request->setFields($fields);
28+
}
29+
30+
return $request;
31+
}
32+
33+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace SilverStripe\DiscovererBifrost\Processors;
4+
5+
use Exception;
6+
use SilverStripe\Core\Injector\Injectable;
7+
use SilverStripe\Discoverer\Service\Results\Field;
8+
use SilverStripe\Discoverer\Service\Results\Suggestions;
9+
use Silverstripe\Search\Client\Model\QuerySuggestionResponse;
10+
11+
class QuerySuggestionsProcessor
12+
{
13+
14+
use Injectable;
15+
16+
/**
17+
* @throws Exception
18+
*/
19+
public function getProcessedSuggestions(Suggestions $suggestions, QuerySuggestionResponse $response): void
20+
{
21+
$results = $response->getResults() ?? [];
22+
23+
foreach ($results as $result) {
24+
$suggestions->addSuggestion(Field::create(
25+
$result->getRaw() ?? null,
26+
));
27+
}
28+
}
29+
30+
}

0 commit comments

Comments
 (0)