Skip to content

Commit

Permalink
馃Ч extract hard dependency (#132)
Browse files Browse the repository at this point in the history
馃Ч extract hard dependency introduce new bundle
  • Loading branch information
julianzimmermann committed Oct 25, 2023
1 parent 646744c commit 5e0780e
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 12 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"require": {
"php": ">=8.0",
"fond-of-impala/company-price-list": "^1.0.0",
"fond-of-oryx/company-users-rest-api-extension": "^2.1.0",
"fond-of-oryx/company-users-rest-api-extension": "^2.2.0",
"fond-of-spryker/company-user-reference": "dev-master",
"spryker/company": "^1.4.0",
"spryker/company-business-unit": "^1.0.0 || ^2.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ class CompanyUsersRestApiDependencyProvider extends AbstractBundleDependencyProv
*/
public const PLUGINS_COMPANY_USER_PRE_CREATE = 'PLUGINS_COMPANY_USER_PRE_CREATE';

/**
* @var string
*/
public const PLUGINS_COMPANY_USER_QUERY_EXPANDER = 'PLUGINS_COMPANY_USER_QUERY_EXPANDER';

/**
* @param \Spryker\Zed\Kernel\Container $container
*
Expand Down Expand Up @@ -126,6 +131,7 @@ public function providePersistenceLayerDependencies(Container $container): Conta
$container = parent::providePersistenceLayerDependencies($container);

$container = $this->addCompanyRoleToCompanyUserPropelQuery($container);
$container = $this->addCompanyUserQueryExpanderPlugins($container);

return $this->addCompanyUserPropelQuery($container);
}
Expand Down Expand Up @@ -381,4 +387,28 @@ protected function getCompanyUserPreCreatePlugins(): array
{
return [];
}

/**
* @param \Spryker\Zed\Kernel\Container $container
*
* @return \Spryker\Zed\Kernel\Container
*/
public function addCompanyUserQueryExpanderPlugins(Container $container): Container
{
$self = $this;

$container[static::PLUGINS_COMPANY_USER_QUERY_EXPANDER] = static function () use ($self) {
return $self->getCompanyUserQueryExpanderPlugins();
};

return $container;
}

/**
* @return array<\FondOfOryx\Zed\CompanyUsersRestApiExtension\Dependency\Plugin\QueryExpander\CompanyUserQueryExpanderPluginInterface>
*/
protected function getCompanyUserQueryExpanderPlugins(): array
{
return [];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
namespace FondOfImpala\Zed\CompanyUsersRestApi\Persistence;

use FondOfImpala\Zed\CompanyUsersRestApi\CompanyUsersRestApiDependencyProvider;
use FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Expander\CompanyUserQueryExpander;
use FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Expander\CompanyUserQueryExpanderInterface;
use FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Mapper\CompanyUserMapper;
use FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Mapper\CompanyUserMapperInterface;
use Orm\Zed\CompanyRole\Persistence\SpyCompanyRoleToCompanyUserQuery;
Expand Down Expand Up @@ -35,11 +37,27 @@ public function getCompanyRoleToCompanyUserPropelQuery(): SpyCompanyRoleToCompan
return $this->getProvidedDependency(CompanyUsersRestApiDependencyProvider::PROPEL_QUERY_COMPANY_ROLE_TO_COMPANY_USER);
}

/**
* @return array<\FondOfOryx\Zed\CompanyUsersRestApiExtension\Dependency\Plugin\QueryExpander\CompanyUserQueryExpanderPluginInterface>
*/
public function getCompanyUserQueryExpanderPlugins(): array
{
return $this->getProvidedDependency(CompanyUsersRestApiDependencyProvider::PLUGINS_COMPANY_USER_QUERY_EXPANDER);
}

/**
* @return \FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Mapper\CompanyUserMapperInterface
*/
public function createCompanyUserMapper(): CompanyUserMapperInterface
{
return new CompanyUserMapper();
}

/**
* @return \FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Expander\CompanyUserQueryExpanderInterface
*/
public function createCompanyUserQueryExpander(): CompanyUserQueryExpanderInterface
{
return new CompanyUserQueryExpander($this->getCompanyUserQueryExpanderPlugins());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,22 @@ class CompanyUsersRestApiRepository extends AbstractRepository implements Compan
*/
public function findActiveCompanyUsersByCustomerReference(string $customerReference): array
{
/** @var array<\Orm\Zed\CompanyUser\Persistence\Base\SpyCompanyUser> $companyUsers */
$companyUsers = $this->getFactory()
$query = $this->getFactory()
->getCompanyUserPropelQuery()
->useCustomerQuery()
->filterByCustomerReference($customerReference)
->endUse()
->useCompanyQuery()
->usePriceListQuery()
->endUse()
->filterByCustomerReference($customerReference)
->endUse()
->useCompanyBusinessUnitQuery()
->endUse()
->useSpyCompanyRoleToCompanyUserQuery()
->useCompanyRoleQuery()
->endUse()
->endUse()
->find();
->useCompanyRoleQuery()
->endUse()
->endUse();

$query = $this->getFactory()->createCompanyUserQueryExpander()->expand($query);

/** @var array<\Orm\Zed\CompanyUser\Persistence\Base\SpyCompanyUser> $companyUsers */
$companyUsers = $query->find();

$companyUserTransfers = [];

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Expander;

use Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery;

class CompanyUserQueryExpander implements CompanyUserQueryExpanderInterface
{
/**
* @var \FondOfOryx\Zed\CompanyUsersRestApiExtension\Dependency\Plugin\QueryExpander\CompanyUserQueryExpanderPluginInterface[]|array
*/
protected array $expanderPlugins;

/**
* @param array<\FondOfOryx\Zed\CompanyUsersRestApiExtension\Dependency\Plugin\QueryExpander\CompanyUserQueryExpanderPluginInterface> $expanderPlugins
*/
public function __construct(array $expanderPlugins)
{
$this->expanderPlugins = $expanderPlugins;
}

/**
* @param \Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery $companyUserQuery
*
* @return \Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery
*/
public function expand(SpyCompanyUserQuery $companyUserQuery): SpyCompanyUserQuery
{
foreach ($this->expanderPlugins as $expanderPlugin) {
$companyUserQuery = $expanderPlugin->expandCompanyUserQuery($companyUserQuery);
}

return $companyUserQuery;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace FondOfImpala\Zed\CompanyUsersRestApi\Persistence\Expander;

use Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery;

interface CompanyUserQueryExpanderInterface
{
/**
* @param \Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery $companyUserQuery
*
* @return \Orm\Zed\CompanyUser\Persistence\SpyCompanyUserQuery
*/
public function expand(SpyCompanyUserQuery $companyUserQuery): SpyCompanyUserQuery;
}

0 comments on commit 5e0780e

Please sign in to comment.