Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 17 additions & 29 deletions .github/workflows/pre-release-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,39 +39,30 @@ jobs:
MEILI_NO_ANALYTICS: true
strategy:
matrix:
php-version: ['7.4', '8.1', '8.2', '8.3', '8.4']
sf-version: ['5.4', '6.4', '7.0', '7.1', '7.2', '7.3']
php-version: [ '8.1', '8.2', '8.3', '8.4' ]
sf-version: ['6.4', '7.0', '7.1', '7.2', '7.3' ]
dependencies: [ 'default' ]
exclude:
- php-version: '7.4'
sf-version: '6.4'
- php-version: '7.4'
sf-version: '7.0'
- php-version: '7.4'
sf-version: '7.1'
- php-version: '7.4'
sf-version: '7.3'
- php-version: '8.1'
sf-version: '5.4'
- php-version: '8.1'
sf-version: '7.0'
- php-version: '8.1'
sf-version: '7.1'
- php-version: '8.1'
sf-version: '7.3'
- php-version: '8.2'
sf-version: '5.4'
- php-version: '8.3'
sf-version: '5.4'
- php-version: '8.4'
sf-version: '5.4'
- php-version: '7.4'
sf-version: '7.2'
- php-version: '8.0'
sf-version: '7.2'
- php-version: '8.1'
sf-version: '7.2'
sf-version: '7.3'
include:
- php-version: '8.4'
sf-version: '6.4'
dependencies: 'lowest'
- php-version: '8.4'
sf-version: '6.4'
dependencies: 'highest'
- php-version: '8.4'
sf-version: '7.3'
dependencies: 'highest'

name: integration-tests-against-rc (PHP ${{ matrix.php-version }}) (Symfony ${{ matrix.sf-version }}.*)
name: integration-tests-against-rc (PHP ${{ matrix.php-version }}) (Symfony ${{ matrix.sf-version }}.*)${{ matrix.dependencies != 'default' && format(' ({0})', matrix.dependencies) || '' }}
steps:
- name: Checkout code
uses: actions/checkout@v6
Expand All @@ -85,16 +76,13 @@ jobs:
- name: Validate composer.json and composer.lock
run: composer validate

- name: Remove doctrine/annotations
if: matrix.php-version != '7.4'
run: sed -i '/doctrine\/annotations/d' composer.json

- name: Install dependencies
uses: ramsey/composer-install@v3
env:
SYMFONY_REQUIRE: ${{ matrix.sf-version }}.*
with:
dependency-versions: 'highest'
composer-options: --no-interaction --no-progress --prefer-dist --no-security-blocking
dependency-versions: "${{ matrix.dependencies }}"

- name: Run test suite
run: composer test:unit -- --coverage-clover coverage.xml
34 changes: 3 additions & 31 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,10 @@ jobs:
MEILI_NO_ANALYTICS: true
strategy:
matrix:
php-version: [ '7.4', '8.1', '8.2', '8.3', '8.4' ]
sf-version: [ '5.4', '6.4', '7.0', '7.1', '7.2', '7.3' ]
php-version: [ '8.1', '8.2', '8.3', '8.4' ]
sf-version: ['6.4', '7.0', '7.1', '7.2', '7.3' ]
dependencies: [ 'default' ]
exclude:
- php-version: '7.4'
sf-version: '6.4'
- php-version: '7.4'
sf-version: '7.0'
- php-version: '7.4'
sf-version: '7.1'
- php-version: '7.4'
sf-version: '7.2'
- php-version: '7.4'
sf-version: '7.3'
- php-version: '8.1'
sf-version: '5.4'
- php-version: '8.1'
sf-version: '7.0'
- php-version: '8.1'
Expand All @@ -49,19 +37,7 @@ jobs:
sf-version: '7.2'
- php-version: '8.1'
sf-version: '7.3'
- php-version: '8.2'
sf-version: '5.4'
- php-version: '8.3'
sf-version: '5.4'
- php-version: '8.4'
sf-version: '5.4'
include:
- php-version: '7.4'
sf-version: '5.4'
dependencies: 'lowest'
- php-version: '7.4'
sf-version: '5.4'
dependencies: 'highest'
- php-version: '8.4'
sf-version: '6.4'
dependencies: 'lowest'
Expand All @@ -86,10 +62,6 @@ jobs:
- name: Validate composer.json
run: composer validate

- name: Remove doctrine/annotations
if: matrix.php-version != '7.4'
run: sed -i '/doctrine\/annotations/d' composer.json

- name: Install dependencies
uses: ramsey/composer-install@v3
env:
Expand Down Expand Up @@ -124,7 +96,7 @@ jobs:
- name: Install dependencies
uses: ramsey/composer-install@v3
env:
SYMFONY_REQUIRE: 7.2.*
SYMFONY_REQUIRE: 7.4.*
with:
composer-options: '--no-progress --quiet'
dependency-versions: 'highest'
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,14 @@ Say goodbye to server deployment and manual updates with [Meilisearch Cloud](htt

* **Require** PHP 7.4 and later.
* **Compatible** with Symfony 5.4 and later.
* **Support** Doctrine ORM.

For support of older versions, see older versions of this bundle.

## Doctrine Integration

To enable Doctrine integration you have to install `doctrine/orm` and `doctrine/doctrine-bundle`
packages.

## 🤖 Compatibility with Meilisearch

This package guarantees compatibility with [version v1.x of Meilisearch](https://github.com/meilisearch/meilisearch/releases/latest), but some features may not be present. Please check the [issues](https://github.com/meilisearch/meilisearch-symfony/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+label%3Aenhancement) for more info.
Expand Down
38 changes: 18 additions & 20 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,40 +18,38 @@
}
],
"require": {
"php": "^7.4|^8.0",
"php": "^8.1",
"ext-json": "*",
"doctrine/doctrine-bundle": "^2.10 || ^3.0",
"meilisearch/meilisearch-php": "^1.16",
"symfony/config": "^5.4 || ^6.0 || ^7.0",
"symfony/dependency-injection": "^5.4.17 || ^6.0 || ^7.0",
"symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
"symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
"symfony/polyfill-php80": "^1.27",
"symfony/property-access": "^5.4 || ^6.0 || ^7.0",
"symfony/serializer": "^5.4 || ^6.0 || ^7.0"
"symfony/config": "^6.4 || ^7.0",
"symfony/dependency-injection": "^6.4 || ^7.0",
"symfony/event-dispatcher": "^6.4 || ^7.0",
"symfony/http-kernel": "^6.4 || ^7.0",
"symfony/property-access": "^6.4 || ^7.0",
"symfony/serializer": "^6.4 || ^7.0"
},
"require-dev": {
"doctrine/annotations": "^2.0.0",
"doctrine/doctrine-bundle": "^2.10 || ^3.0",
"doctrine/orm": "^2.12 || ^3.0",
"matthiasnoback/symfony-config-test": "^4.3 || ^5.2",
"matthiasnoback/symfony-dependency-injection-test": "^4.3 || ^5.1",
"nikic/php-parser": "^5.6.2",
"nyholm/psr7": "^1.8.2",
"php-cs-fixer/shim": "^3.88.2",
"php-cs-fixer/shim": "^3.90.0",
"phpmd/phpmd": "^2.15",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.31",
"phpstan/phpstan-doctrine": "^2.0.10",
"phpstan/phpstan-phpunit": "^2.0.7",
"phpstan/phpstan": "^2.1.32",
"phpstan/phpstan-doctrine": "^2.0.11",
"phpstan/phpstan-phpunit": "^2.0.8",
"phpstan/phpstan-symfony": "^2.0.8",
"phpunit/php-code-coverage": "^9.2.32",
"symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
"symfony/framework-bundle": "^5.4.17 || ^6.0 || ^7.0",
"symfony/http-client": "^5.4.47 || ^6.4.15 || ^7.1.8",
"symfony/doctrine-bridge": "^6.4 || ^7.0",
"symfony/filesystem": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/http-client": "^6.4.15 || ^7.1.8",
"symfony/phpunit-bridge": "^7.3",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0",
"symfony/var-exporter": "^5.4 || ^6.0 || ^7.0"
"symfony/yaml": "^6.4 || ^7.0",
"symfony/var-exporter": "^6.4 || ^7.0"
},
"autoload": {
"psr-4": {
Expand Down
17 changes: 17 additions & 0 deletions config/doctrine.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use Meilisearch\Bundle\EventListener\DoctrineEventSubscriber;

return static function (ContainerConfigurator $container) {
$services = $container->services();

$services->set('meilisearch.search_indexer_subscriber', DoctrineEventSubscriber::class)
->public()
->args([
service('meilisearch.manager')
])

;
};
49 changes: 37 additions & 12 deletions config/services.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@
use Meilisearch\Bundle\Command\MeilisearchDeleteCommand;
use Meilisearch\Bundle\Command\MeilisearchImportCommand;
use Meilisearch\Bundle\Command\MeilisearchUpdateSettingsCommand;
use Meilisearch\Bundle\DataProvider\DataProviderRegistry;
use Meilisearch\Bundle\DataProvider\DataProviderRegistryInterface;
use Meilisearch\Bundle\Engine;
use Meilisearch\Bundle\EventListener\DoctrineEventSubscriber;
use Meilisearch\Bundle\Identifier\DefaultIdNormalizer;
use Meilisearch\Bundle\Identifier\IdNormalizerInterface;
use Meilisearch\Bundle\SearchManagerInterface;
use Meilisearch\Bundle\SearchService;
use Meilisearch\Bundle\Services\MeilisearchManager;
use Meilisearch\Bundle\Services\MeilisearchService;
use Meilisearch\Bundle\Services\SettingsUpdater;
use Meilisearch\Bundle\Services\UnixTimestampNormalizer;
Expand All @@ -30,15 +35,14 @@
service('meilisearch.engine'),
abstract_arg('configuration'),
service('property_accessor'),
service('meilisearch.manager'),
]);

$services->alias('search.service', 'meilisearch.service')
->public()
->deprecate('meilisearch/search-bundle', '0.14', 'The "%alias_id%" service alias is deprecated. Use "meilisearch.service" instead.');

$services->set('meilisearch.search_indexer_subscriber', DoctrineEventSubscriber::class)
->public()
->args([service('meilisearch.service')]);
$services->alias(SearchService::class, 'meilisearch.service');

$services->alias('search.search_indexer_subscriber', 'meilisearch.search_indexer_subscriber')
->deprecate('meilisearch/search-bundle', '0.14', 'The "%alias_id%" service alias is deprecated. Use "meilisearch.search_indexer_subscriber" instead.');
Expand All @@ -62,52 +66,73 @@
$services->alias(Client::class, 'meilisearch.client')
->public();

$services->alias(SearchService::class, 'meilisearch.service');
$services->set('meilisearch.manager', MeilisearchManager::class)
->args([
abstract_arg('normalizer'),
service('meilisearch.engine'),
service('property_accessor'),
service('meilisearch.data_provider.registry'),
abstract_arg('configuration'),
]);
$services->alias(SearchManagerInterface::class, 'meilisearch.manager');

$services->set('meilisearch.settings_updater', SettingsUpdater::class)
->args([
service('meilisearch.service'),
service('meilisearch.manager'),
service('meilisearch.client'),
service('event_dispatcher'),
]);

$services->alias(SettingsUpdater::class, 'meilisearch.settings_updater');

$services->set(MeilisearchClearCommand::class)
->args([service('meilisearch.service')])
->args([service('meilisearch.manager')])
->tag('console.command', ['command' => 'meilisearch:clear|meili:clear', 'description' => 'Clear the index documents']);

$services->set(MeilisearchCreateCommand::class)
->args([
service('meilisearch.service'),
service('meilisearch.manager'),
service('meilisearch.client'),
service('meilisearch.settings_updater'),
service('event_dispatcher'),
])
->tag('console.command', ['command' => 'meilisearch:create|meili:create', 'description' => 'Create indexes']);

$services->set(MeilisearchDeleteCommand::class)
->args([service('meilisearch.service')])
->args([service('meilisearch.manager')])
->tag('console.command', ['command' => 'meilisearch:delete|meili:delete', 'description' => 'Delete the indexes']);

$services->set(MeilisearchImportCommand::class)
->args([
service('meilisearch.service'),
service('doctrine'),
service('meilisearch.manager'),
service('meilisearch.client'),
service('meilisearch.settings_updater'),
service('event_dispatcher'),
service('meilisearch.data_provider.registry'),
])
->tag('console.command', ['command' => 'meilisearch:import|meili:import', 'description' => 'Import given entity into search engine']);

$services->set(MeilisearchUpdateSettingsCommand::class)
->args([
service('meilisearch.service'),
service('meilisearch.manager'),
service('meilisearch.settings_updater'),
service('event_dispatcher'),
])
->tag('console.command', ['command' => 'meilisearch:update-settings', 'description' => 'Push settings to meilisearch']);

$services->set(UnixTimestampNormalizer::class)
->tag('serializer.normalizer');

$services->set('meilisearch.data_provider.registry', DataProviderRegistry::class)
->args([
abstract_arg('provider locator'),
abstract_arg('provider map'),
])
->alias(DataProviderRegistryInterface::class, 'meilisearch.data_provider.registry');

$services
->set('meilisearch.identifier.default_id_normalizer', DefaultIdNormalizer::class)
->alias(IdNormalizerInterface::class, 'meilisearch.identifier.default_id_normalizer')

;
};
23 changes: 23 additions & 0 deletions phpstan-baseline.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php declare(strict_types = 1);

$ignoreErrors = [];
$ignoreErrors[] = [
'message' => '#^Call to static method getClass\\(\\) on an unknown class Doctrine\\\\Common\\\\Util\\\\ClassUtils\\.$#',
'identifier' => 'class.notFound',
'count' => 1,
'path' => __DIR__ . '/src/Services/MeilisearchManager.php',
];
$ignoreErrors[] = [
'message' => '#^Call to static method getClass\\(\\) on an unknown class Doctrine\\\\Common\\\\Util\\\\ClassUtils\\.$#',
'identifier' => 'class.notFound',
'count' => 1,
'path' => __DIR__ . '/src/Services/MeilisearchService.php',
];
$ignoreErrors[] = [
'message' => '#^Offset \'hits\' on array\\{hits\\: array\\<int, mixed\\>, query\\: string, processingTimeMs\\: int, limit\\: int, offset\\: int, estimatedTotalHits\\: int, requestUid\\: non\\-empty\\-string, nbHits\\: int\\} in isset\\(\\) always exists and is not nullable\\.$#',
'identifier' => 'isset.offset',
'count' => 1,
'path' => __DIR__ . '/src/Services/MeilisearchService.php',
];

return ['parameters' => ['ignoreErrors' => $ignoreErrors]];
6 changes: 3 additions & 3 deletions phpstan.dist.neon
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
includes:
- phpstan-baseline.php

parameters:
bootstrapFiles:
- vendor/bin/.phpunit/phpunit/vendor/autoload.php
level: 5
paths:
- src
- tests
ignoreErrors:
- '#Call to static method getClass\(\) on an unknown class Doctrine\\Common\\Util\\ClassUtils#'
- '#Parameter \#1 \$array of function array_unique expects an array of values castable to string, list<class-string<Meilisearch\\Bundle\\Entity\\Aggregator>\|Meilisearch\\Bundle\\Entity\\Aggregator> given#'
Loading
Loading