Skip to content

Commit

Permalink
Implementing repository interface is not mandatory anymore
Browse files Browse the repository at this point in the history
  • Loading branch information
loic425 committed May 17, 2024
1 parent 40e795a commit 713d537
Show file tree
Hide file tree
Showing 17 changed files with 405 additions and 89 deletions.
113 changes: 113 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,118 @@
## CHANGELOG

## v1.11.0-BETA.2 (2024-05-14)

#### Details

- [#871](https://github.com/Sylius/SyliusResourceBundle/issues/871) Fix state machine tag ([@Zales0123](https://github.com/Zales0123))
Working on Sylius/SyliusResourceBundle (branch 1.11)

## v1.11.0-BETA.1 (2024-04-19)

#### Details

- [#545](https://github.com/Sylius/SyliusResourceBundle/issues/545) Update phpspec/phpspec to 7.3 ([@dannyvw](https://github.com/dannyvw))
- [#607](https://github.com/Sylius/SyliusResourceBundle/issues/607) Allow jms/serializer-bundle ^5.0 ([@dannyvw](https://github.com/dannyvw))
- [#611](https://github.com/Sylius/SyliusResourceBundle/issues/611) Allow doctrine/collections ^2.0 ([@dannyvw](https://github.com/dannyvw))
- [#613](https://github.com/Sylius/SyliusResourceBundle/issues/613) Configure specific state machine component for a resource ([@loic425](https://github.com/loic425))
- [#634](https://github.com/Sylius/SyliusResourceBundle/issues/634) Allow Pagerfanta 4.0 ([@mbabker](https://github.com/mbabker))
- [#659](https://github.com/Sylius/SyliusResourceBundle/issues/659) Debug resource with FQCN ([@loic425](https://github.com/loic425))
- [#682](https://github.com/Sylius/SyliusResourceBundle/issues/682) [New docs] docs' pagination ([@loic425](https://github.com/loic425))
- [#687](https://github.com/Sylius/SyliusResourceBundle/issues/687) [New docs] Configure the resource name ([@loic425](https://github.com/loic425))
- [#689](https://github.com/Sylius/SyliusResourceBundle/issues/689) [New docs] Configure the resource plural name ([@loic425](https://github.com/loic425))
- [#696](https://github.com/Sylius/SyliusResourceBundle/issues/696) [CI] Add support for PHP 8.2 ([@loic425](https://github.com/loic425))
- [#706](https://github.com/Sylius/SyliusResourceBundle/issues/706) [Test app] Use Doctrine attributes ([@loic425](https://github.com/loic425))
- [#717](https://github.com/Sylius/SyliusResourceBundle/issues/717) Fix after upmerge ([@loic425](https://github.com/loic425))
- [#718](https://github.com/Sylius/SyliusResourceBundle/issues/718) Poc rebased ([@loic425](https://github.com/loic425))
- [#719](https://github.com/Sylius/SyliusResourceBundle/issues/719) Update licence ([@Rafikooo](https://github.com/Rafikooo))
- [#723](https://github.com/Sylius/SyliusResourceBundle/issues/723) Fix default templates dir ([@loic425](https://github.com/loic425))
- [#724](https://github.com/Sylius/SyliusResourceBundle/issues/724) Add flash from event on processor ([@lchrusciel](https://github.com/lchrusciel))
- [#726](https://github.com/Sylius/SyliusResourceBundle/issues/726) Update license ([@Zales0123](https://github.com/Zales0123))
- [#727](https://github.com/Sylius/SyliusResourceBundle/issues/727) Bulk update ([@loic425](https://github.com/loic425))
- [#728](https://github.com/Sylius/SyliusResourceBundle/issues/728) Psalm fix after upmerge ([@Zales0123](https://github.com/Zales0123))
- [#729](https://github.com/Sylius/SyliusResourceBundle/issues/729) [doc] Add missing new line to configure_your_operations.md example ([@diimpp](https://github.com/diimpp))
- [#730](https://github.com/Sylius/SyliusResourceBundle/issues/730) Grid aware operation ([@loic425](https://github.com/loic425))
- [#731](https://github.com/Sylius/SyliusResourceBundle/issues/731) Configure driver on resource attribute ([@loic425](https://github.com/loic425))
- [#732](https://github.com/Sylius/SyliusResourceBundle/issues/732) Remove unused template ([@loic425](https://github.com/loic425))
- [#733](https://github.com/Sylius/SyliusResourceBundle/issues/733) Move PHPUnit tests from bundle ([@loic425](https://github.com/loic425))
- [#738](https://github.com/Sylius/SyliusResourceBundle/issues/738) Fix Doctrine subscriber deprecations ([@loic425](https://github.com/loic425))
- [#740](https://github.com/Sylius/SyliusResourceBundle/issues/740) [Fix] Update delete path name to avoid route conflicts ([@loic425](https://github.com/loic425))
- [#741](https://github.com/Sylius/SyliusResourceBundle/issues/741) Add request to routing arguments ([@loic425](https://github.com/loic425))
- [#742](https://github.com/Sylius/SyliusResourceBundle/issues/742) Define simple vars on your operations ([@loic425](https://github.com/loic425))
- [#743](https://github.com/Sylius/SyliusResourceBundle/issues/743) Update rector/rector requirement from ^0.13.5 to ^0.18.2 ([@dependabot](https://github.com/dependabot)[[@bot](https://github.com/bot)])
- [#745](https://github.com/Sylius/SyliusResourceBundle/issues/745) Improve testing debug resource command ([@loic425](https://github.com/loic425))
- [#746](https://github.com/Sylius/SyliusResourceBundle/issues/746) Add POST http method on update, delete and bulk delete operation ([@loic425](https://github.com/loic425))
- [#747](https://github.com/Sylius/SyliusResourceBundle/issues/747) Fix name of file inside the comments for BookFactory ([@harikt](https://github.com/harikt))
- [#757](https://github.com/Sylius/SyliusResourceBundle/issues/757) Use AsResource attribute instead of reserved word Resource ([@loic425](https://github.com/loic425))
- [#758](https://github.com/Sylius/SyliusResourceBundle/issues/758) Remove Component namespace on action ([@loic425](https://github.com/loic425))
- [#759](https://github.com/Sylius/SyliusResourceBundle/issues/759) Remove Component namespace on annotation ([@loic425](https://github.com/loic425))
- [#760](https://github.com/Sylius/SyliusResourceBundle/issues/760) Remove Component namespace on context ([@loic425](https://github.com/loic425))
- [#761](https://github.com/Sylius/SyliusResourceBundle/issues/761) Remove Component namespace on Doctrine ([@loic425](https://github.com/loic425))
- [#762](https://github.com/Sylius/SyliusResourceBundle/issues/762) Remove Component namespace on state ([@loic425](https://github.com/loic425))
- [#764](https://github.com/Sylius/SyliusResourceBundle/issues/764) Fix routing with moved attributes ([@loic425](https://github.com/loic425))
- [#766](https://github.com/Sylius/SyliusResourceBundle/issues/766) Move some namespaces on Storage ([@loic425](https://github.com/loic425))
- [#767](https://github.com/Sylius/SyliusResourceBundle/issues/767) Move some namespaces on Symfony event dispatchers ([@loic425](https://github.com/loic425))
- [#768](https://github.com/Sylius/SyliusResourceBundle/issues/768) Move some namespaces on Exceptions ([@loic425](https://github.com/loic425))
- [#769](https://github.com/Sylius/SyliusResourceBundle/issues/769) Move some namespaces on Grid ([@loic425](https://github.com/loic425))
- [#770](https://github.com/Sylius/SyliusResourceBundle/issues/770) Move some namespaces on Humanizer ([@loic425](https://github.com/loic425))
- [#772](https://github.com/Sylius/SyliusResourceBundle/issues/772) Move some namespaces on Symfony event listener ([@loic425](https://github.com/loic425))
- [#773](https://github.com/Sylius/SyliusResourceBundle/issues/773) Fix response status when method is safe ([@loic425](https://github.com/loic425))
- [#774](https://github.com/Sylius/SyliusResourceBundle/issues/774) Move some namespaces on new Metadata ([@loic425](https://github.com/loic425))
- [#775](https://github.com/Sylius/SyliusResourceBundle/issues/775) Move some namespaces on Twig ([@loic425](https://github.com/loic425))
- [#777](https://github.com/Sylius/SyliusResourceBundle/issues/777) Move some namespaces on Factory ([@loic425](https://github.com/loic425))
- [#778](https://github.com/Sylius/SyliusResourceBundle/issues/778) Move some namespaces on Symfony expression language ([@loic425](https://github.com/loic425))
- [#779](https://github.com/Sylius/SyliusResourceBundle/issues/779) Phpunit tests for Symfony deserialize listener ([@loic425](https://github.com/loic425))
- [#780](https://github.com/Sylius/SyliusResourceBundle/issues/780) Init Deserialize provider ([@loic425](https://github.com/loic425))
- [#783](https://github.com/Sylius/SyliusResourceBundle/issues/783) Move some namespaces on Symfony forms, requests and responses ([@loic425](https://github.com/loic425))
- [#784](https://github.com/Sylius/SyliusResourceBundle/issues/784) Move some namespaces on Symfony routing, validator exceptions and workflow ([@loic425](https://github.com/loic425))
- [#785](https://github.com/Sylius/SyliusResourceBundle/issues/785) Init read provider ([@loic425](https://github.com/loic425))
- [#786](https://github.com/Sylius/SyliusResourceBundle/issues/786) Fix readme with supported branches ([@loic425](https://github.com/loic425))
- [#788](https://github.com/Sylius/SyliusResourceBundle/issues/788) Init flash processor ([@loic425](https://github.com/loic425))
- [#789](https://github.com/Sylius/SyliusResourceBundle/issues/789) Phpunit tests for Symfony respond listener ([@loic425](https://github.com/loic425))
- [#790](https://github.com/Sylius/SyliusResourceBundle/issues/790) Init respond processor ([@loic425](https://github.com/loic425))
- [#791](https://github.com/Sylius/SyliusResourceBundle/issues/791) Phpunit tests for Symfony form listener ([@loic425](https://github.com/loic425))
- [#792](https://github.com/Sylius/SyliusResourceBundle/issues/792) Phpunit tests for Symfony flash listener ([@loic425](https://github.com/loic425))
- [#793](https://github.com/Sylius/SyliusResourceBundle/issues/793) Init form provider ([@loic425](https://github.com/loic425))
- [#795](https://github.com/Sylius/SyliusResourceBundle/issues/795) Init factory provider ([@loic425](https://github.com/loic425))
- [#798](https://github.com/Sylius/SyliusResourceBundle/issues/798) Init validate provider ([@loic425](https://github.com/loic425))
- [#799](https://github.com/Sylius/SyliusResourceBundle/issues/799) PHPUnit tests for Symfony serialize listener ([@loic425](https://github.com/loic425))
- [#800](https://github.com/Sylius/SyliusResourceBundle/issues/800) Init serialize processor ([@loic425](https://github.com/loic425))
- [#801](https://github.com/Sylius/SyliusResourceBundle/issues/801) PHPUnit tests for Symfony write listener ([@loic425](https://github.com/loic425))
- [#803](https://github.com/Sylius/SyliusResourceBundle/issues/803) PHPUnit tests for Symfony add format listener ([@loic425](https://github.com/loic425))
- [#804](https://github.com/Sylius/SyliusResourceBundle/issues/804) Move some namespaces on metadata ([@loic425](https://github.com/loic425))
- [#805](https://github.com/Sylius/SyliusResourceBundle/issues/805) Move some namespaces on generator ([@loic425](https://github.com/loic425))
- [#806](https://github.com/Sylius/SyliusResourceBundle/issues/806) Move some namespaces on reflection ([@loic425](https://github.com/loic425))
- [#810](https://github.com/Sylius/SyliusResourceBundle/issues/810) [CI] Exclude builds for Symfony 6.4 and doctrine/persistence 2.0 ([@GSadee](https://github.com/GSadee), [@loic425](https://github.com/loic425))
- [#815](https://github.com/Sylius/SyliusResourceBundle/issues/815) PHPUnit tests for factory ([@loic425](https://github.com/loic425))
- [#816](https://github.com/Sylius/SyliusResourceBundle/issues/816) PHPUnit tests for context ([@loic425](https://github.com/loic425))
- [#817](https://github.com/Sylius/SyliusResourceBundle/issues/817) Add DI for Main controller, providers and processors ([@loic425](https://github.com/loic425))
- [#818](https://github.com/Sylius/SyliusResourceBundle/issues/818) Fix Phpspec errors ([@loic425](https://github.com/loic425))
- [#819](https://github.com/Sylius/SyliusResourceBundle/issues/819) Move some namespaces on model ([@loic425](https://github.com/loic425))
- [#820](https://github.com/Sylius/SyliusResourceBundle/issues/820) Move some namespaces on repository ([@loic425](https://github.com/loic425))
- [#821](https://github.com/Sylius/SyliusResourceBundle/issues/821) Fix serialize processor ([@loic425](https://github.com/loic425))
- [#822](https://github.com/Sylius/SyliusResourceBundle/issues/822) Fix flash processor ([@loic425](https://github.com/loic425))
- [#823](https://github.com/Sylius/SyliusResourceBundle/issues/823) Fix event dispatcher provider ([@loic425](https://github.com/loic425))
- [#824](https://github.com/Sylius/SyliusResourceBundle/issues/824) Add main controller ([@loic425](https://github.com/loic425))
- [#826](https://github.com/Sylius/SyliusResourceBundle/issues/826) Replace decorated by processor into bulk aware processor ([@loic425](https://github.com/loic425))
- [#827](https://github.com/Sylius/SyliusResourceBundle/issues/827) Fix respond processor ([@loic425](https://github.com/loic425))
- [#828](https://github.com/Sylius/SyliusResourceBundle/issues/828) Dispatch pre write event processor ([@loic425](https://github.com/loic425))
- [#829](https://github.com/Sylius/SyliusResourceBundle/issues/829) Dispatch post write event processor ([@loic425](https://github.com/loic425))
- [#830](https://github.com/Sylius/SyliusResourceBundle/issues/830) Write processor ([@loic425](https://github.com/loic425))
- [#831](https://github.com/Sylius/SyliusResourceBundle/issues/831) Move deserialize provider into Symfony namespace ([@loic425](https://github.com/loic425))
- [#832](https://github.com/Sylius/SyliusResourceBundle/issues/832) Rename event dispatcher provider to dispatch post read event provider ([@loic425](https://github.com/loic425))
- [#833](https://github.com/Sylius/SyliusResourceBundle/issues/833) Add resource metadata on Twig context ([@loic425](https://github.com/loic425))
- [#836](https://github.com/Sylius/SyliusResourceBundle/issues/836) Remove cache on metadata when debug is enabled ([@loic425](https://github.com/loic425))
- [#838](https://github.com/Sylius/SyliusResourceBundle/issues/838) Rename legacy tests directory ([@loic425](https://github.com/loic425))
- [#841](https://github.com/Sylius/SyliusResourceBundle/issues/841) Add support for PHP 8.3 (CI) ([@loic425](https://github.com/loic425))
- [#847](https://github.com/Sylius/SyliusResourceBundle/issues/847) Fix autowiring for legacy factory and repository ([@loic425](https://github.com/loic425))
- [#849](https://github.com/Sylius/SyliusResourceBundle/issues/849) Add local constraints ([@Wojdylak](https://github.com/Wojdylak))
- [#853](https://github.com/Sylius/SyliusResourceBundle/issues/853) [Docs] Inject factories (autowiring) ([@loic425](https://github.com/loic425))
- [#857](https://github.com/Sylius/SyliusResourceBundle/issues/857) Move state machine with bc-layer ([@loic425](https://github.com/loic425))
- [#858](https://github.com/Sylius/SyliusResourceBundle/issues/858) Move Winzou namespace ([@loic425](https://github.com/loic425))
- [#860](https://github.com/Sylius/SyliusResourceBundle/issues/860) Move translations' namespace ([@loic425](https://github.com/loic425))
- [#862](https://github.com/Sylius/SyliusResourceBundle/issues/862) [Maintenance] Add an exception for unavailable storages ([@NoResponseMate](https://github.com/NoResponseMate))
- [#864](https://github.com/Sylius/SyliusResourceBundle/issues/864) Improve legacy book factory to use more bc-layer classes ([@loic425](https://github.com/loic425))

## v1.11.0-ALPHA.2 (2024-01-30)

#### Details
Expand Down
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
"sylius-labs/coding-standard": "^4.0",
"sylius/grid-bundle": "^1.7 || v1.12.0-ALPHA.1",
"symfony/dependency-injection": "^5.4 || ^6.0",
"symfony/console": "^5.4 || ^6.0",
"symfony/dotenv": "^5.4 || ^6.0",
"symfony/stopwatch": "^5.4 || ^6.0",
"symfony/uid": "^5.4 || ^6.0",
Expand Down
11 changes: 5 additions & 6 deletions docs/create_new_resource.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,9 @@ class BookRepository extends ServiceEntityRepository
}
```

The generated code is not compatible with Sylius Resource yet, so we need to make few changes.
The generated code could be not compatible with Sylius Resource in some cases, so we need to make few changes.

* First, your repository should implement the `Sylius\Component\Resource\Repository\RepositoryInterface` interface
* Then, add the `Sylius\Bundle\ResourceBundle\Doctrine\ORM\ResourceRepositoryTrait` trait
* Add the `Sylius\Bundle\ResourceBundle\Doctrine\ORM\PaginatedRepositoryTrait` trait

Your repository should look like this:

Expand All @@ -139,7 +138,7 @@ namespace App\Repository;
use App\Entity\Book;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Sylius\Bundle\ResourceBundle\Doctrine\ORM\ResourceRepositoryTrait;
use Sylius\Bundle\ResourceBundle\Doctrine\ORM\PaginatedRepositoryTrait;
use Sylius\Resource\Doctrine\Persistence\RepositoryInterface;

/**
Expand All @@ -150,9 +149,9 @@ use Sylius\Resource\Doctrine\Persistence\RepositoryInterface;
* @method Book[] findAll()
* @method Book[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class BookRepository extends ServiceEntityRepository implements RepositoryInterface
class BookRepository extends ServiceEntityRepository
{
use ResourceRepositoryTrait;
use PaginatedRepositoryTrait;

public function __construct(ManagerRegistry $registry)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

namespace Sylius\Bundle\ResourceBundle\DependencyInjection\Compiler;

use Sylius\Resource\Doctrine\Persistence\RepositoryInterface;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
Expand All @@ -35,6 +36,13 @@ public function process(ContainerBuilder $container): void
$repositoryId = sprintf('%s.repository.%s', $applicationName, $resourceName);

if ($container->has($repositoryId)) {
$repositoryDefinition = $container->findDefinition($repositoryId);

// Do not register repositories that do not implement the Sylius repository interface
if (!\is_a($repositoryDefinition->getClass() ?? '', RepositoryInterface::class, true)) {
continue;
}

$repositoryRegistry->addMethodCall('register', [$alias, new Reference($repositoryId)]);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use Doctrine\Common\Persistence\ObjectManager as DeprecatedObjectManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\Persistence\ObjectManager;
use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
Expand Down Expand Up @@ -54,6 +55,14 @@ protected function addRepository(ContainerBuilder $container, MetadataInterface
$repositoryClass = $metadata->getClass('repository');
}

$entityAttributeRepositoryClass = (new \ReflectionClass($metadata->getClass('model')))
->getAttributes(Entity::class)[0]
->newInstance()->repositoryClass;

if (null !== $entityAttributeRepositoryClass) {
$repositoryClass = $entityAttributeRepositoryClass;
}

$serviceId = $metadata->getServiceId('repository');
$managerReference = new Reference($metadata->getServiceId('manager'));
$definition = new Definition($repositoryClass);
Expand All @@ -73,7 +82,6 @@ protected function addRepository(ContainerBuilder $container, MetadataInterface
} else {
if (is_a($repositoryClass, ServiceEntityRepository::class, true)) {
$definition->setArguments([new Reference('doctrine')]);
$container->setDefinition($serviceId, $definition);
} else {
$definition->setArguments([$managerReference, $this->getClassMetadataDefinition($metadata)]);
}
Expand Down
Loading

0 comments on commit 713d537

Please sign in to comment.