mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2025-09-04 10:14:13 +08:00
Add ApiRecordMapperRunner and EntityRecordMapperRunner
This commit is contained in:
parent
e9b07c5367
commit
ca7479fff1
11 changed files with 105 additions and 78 deletions
|
@ -31,23 +31,22 @@ namespace App\Data\DataPersister;
|
|||
use ApiPlatform\Metadata\Operation;
|
||||
use ApiPlatform\State\ProcessorInterface;
|
||||
use App\Data\Entity\Record;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunner;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Service\Record\ApiRecordMappers\ApiRecordMapperRunner;
|
||||
use App\Data\Service\RecordProviderInterface;
|
||||
|
||||
class RecordProcessor implements ProcessorInterface
|
||||
{
|
||||
protected RecordProviderInterface $recordProvider;
|
||||
protected RecordMapperRunner $apiRecordMapperRunner;
|
||||
protected ApiRecordMapperRunner $apiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* RecordProcessor constructor.
|
||||
* @param RecordProviderInterface $recordProvider
|
||||
* @param RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
* @param ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
*/
|
||||
public function __construct(
|
||||
RecordProviderInterface $recordProvider,
|
||||
RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
) {
|
||||
$this->recordProvider = $recordProvider;
|
||||
$this->apiRecordMapperRunner = $apiRecordMapperRunner;
|
||||
|
|
|
@ -32,7 +32,7 @@ use ApiPlatform\State\ProviderInterface;
|
|||
use App\Data\Entity\Record;
|
||||
use App\Data\Entity\RecordList;
|
||||
use App\Data\LegacyHandler\RecordListHandler;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Service\Record\ApiRecordMappers\ApiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* Class RecordListStateProvider
|
||||
|
@ -40,20 +40,17 @@ use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
|||
*/
|
||||
class RecordListStateProvider implements ProviderInterface
|
||||
{
|
||||
/**
|
||||
* @var RecordListHandler
|
||||
*/
|
||||
protected $recordListHandler;
|
||||
protected RecordMapperRunnerInterface $apiRecordMapperRunner;
|
||||
protected RecordListHandler $recordListHandler;
|
||||
protected ApiRecordMapperRunner $apiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* RecordListStateProvider constructor.
|
||||
* @param RecordListHandler $recordListHandler
|
||||
* @param RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
* @param ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
*/
|
||||
public function __construct(
|
||||
RecordListHandler $recordListHandler,
|
||||
RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
) {
|
||||
$this->recordListHandler = $recordListHandler;
|
||||
$this->apiRecordMapperRunner = $apiRecordMapperRunner;
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace App\Data\DataProvider;
|
|||
use ApiPlatform\Metadata\Operation;
|
||||
use ApiPlatform\State\ProviderInterface;
|
||||
use App\Data\Entity\Record;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Service\Record\ApiRecordMappers\ApiRecordMapperRunner;
|
||||
use App\Data\Service\RecordProviderInterface;
|
||||
use Exception;
|
||||
|
||||
|
@ -41,16 +41,16 @@ use Exception;
|
|||
class RecordStateProvider implements ProviderInterface
|
||||
{
|
||||
protected RecordProviderInterface $recordHandler;
|
||||
protected RecordMapperRunnerInterface $apiRecordMapperRunner;
|
||||
protected ApiRecordMapperRunner $apiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* RecordStateProvider constructor.
|
||||
* @param RecordProviderInterface $recordHandler
|
||||
* @param RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
* @param ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
*/
|
||||
public function __construct(
|
||||
RecordProviderInterface $recordHandler,
|
||||
RecordMapperRunnerInterface $apiRecordMapperRunner
|
||||
ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
) {
|
||||
$this->recordHandler = $recordHandler;
|
||||
$this->apiRecordMapperRunner = $apiRecordMapperRunner;
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
namespace App\Data\LegacyHandler;
|
||||
|
||||
use App\Data\Service\AlertProviderInterface;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Service\Record\EntityRecordMappers\EntityRecordMapperRunner;
|
||||
use App\Data\Service\Record\RecordSaveHandlers\RecordSaveHandlerRunnerInterface;
|
||||
use App\Data\Service\RecordDeletionServiceInterface;
|
||||
use App\Engine\LegacyHandler\LegacyScopeState;
|
||||
|
@ -62,6 +62,8 @@ class AlertHandler extends RecordHandler implements AlertProviderInterface
|
|||
* @param AclManagerInterface $aclHandler
|
||||
* @param FavoriteProviderInterface $favorites
|
||||
* @param RecordDeletionServiceInterface $recordDeletionProvider
|
||||
* @param EntityRecordMapperRunner $entityRecordMapperRunner
|
||||
* @param RecordSaveHandlerRunnerInterface $saveHandlerRunner
|
||||
*/
|
||||
public function __construct(
|
||||
string $projectDir,
|
||||
|
@ -74,7 +76,7 @@ class AlertHandler extends RecordHandler implements AlertProviderInterface
|
|||
AclManagerInterface $aclHandler,
|
||||
FavoriteProviderInterface $favorites,
|
||||
RecordDeletionServiceInterface $recordDeletionProvider,
|
||||
RecordMapperRunnerInterface $entityRecordMapperRunner,
|
||||
EntityRecordMapperRunner $entityRecordMapperRunner,
|
||||
RecordSaveHandlerRunnerInterface $saveHandlerRunner
|
||||
) {
|
||||
parent::__construct(
|
||||
|
@ -164,7 +166,7 @@ class AlertHandler extends RecordHandler implements AlertProviderInterface
|
|||
/** @var \Reminder $bean */
|
||||
$reminder = BeanFactory::getBean('Reminders', $reminderId, ['encode' => false]);
|
||||
|
||||
if (empty($reminder)){
|
||||
if (empty($reminder)) {
|
||||
return;
|
||||
}
|
||||
$reminder->popup_viewed = 1;
|
||||
|
|
|
@ -29,8 +29,7 @@ namespace App\Data\LegacyHandler;
|
|||
|
||||
use ApiBeanMapper;
|
||||
use App\Data\Entity\Record;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunner;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Service\Record\EntityRecordMappers\EntityRecordMapperRunner;
|
||||
use App\Data\Service\Record\RecordSaveHandlers\RecordSaveHandlerRunnerInterface;
|
||||
use App\Data\Service\RecordProviderInterface;
|
||||
use App\Engine\LegacyHandler\LegacyHandler;
|
||||
|
@ -67,8 +66,8 @@ class RecordHandler extends LegacyHandler implements RecordProviderInterface
|
|||
*/
|
||||
protected $favorites;
|
||||
|
||||
protected RecordMapperRunner $entityRecordMapperRunner;
|
||||
private RecordSaveHandlerRunnerInterface $saveHandlerRunner;
|
||||
protected EntityRecordMapperRunner $entityRecordMapperRunner;
|
||||
protected RecordSaveHandlerRunnerInterface $saveHandlerRunner;
|
||||
|
||||
/**
|
||||
* RecordViewHandler constructor.
|
||||
|
@ -81,7 +80,7 @@ class RecordHandler extends LegacyHandler implements RecordProviderInterface
|
|||
* @param RequestStack $session
|
||||
* @param AclManagerInterface $aclHandler
|
||||
* @param FavoriteProviderInterface $favorites
|
||||
* @param RecordMapperRunnerInterface $entityRecordMapperRunner
|
||||
* @param EntityRecordMapperRunner $entityRecordMapperRunner
|
||||
* @param RecordSaveHandlerRunnerInterface $saveHandlerRunner
|
||||
*/
|
||||
public function __construct(
|
||||
|
@ -94,7 +93,7 @@ class RecordHandler extends LegacyHandler implements RecordProviderInterface
|
|||
RequestStack $session,
|
||||
AclManagerInterface $aclHandler,
|
||||
FavoriteProviderInterface $favorites,
|
||||
RecordMapperRunnerInterface $entityRecordMapperRunner,
|
||||
EntityRecordMapperRunner $entityRecordMapperRunner,
|
||||
RecordSaveHandlerRunnerInterface $saveHandlerRunner
|
||||
) {
|
||||
parent::__construct(
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
|
||||
namespace App\Data\LegacyHandler;
|
||||
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunnerInterface;
|
||||
use App\Data\Entity\RecordList;
|
||||
use App\Data\Service\Record\EntityRecordMappers\EntityRecordMapperRunner;
|
||||
use App\Data\Service\RecordListProviderInterface;
|
||||
use App\Engine\LegacyHandler\LegacyHandler;
|
||||
use App\Engine\LegacyHandler\LegacyScopeState;
|
||||
use App\Data\Entity\RecordList;
|
||||
use App\Module\Service\ModuleNameMapperInterface;
|
||||
use App\Data\Service\RecordListProviderInterface;
|
||||
use InvalidArgumentException;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
|
||||
|
@ -58,7 +58,7 @@ class RecordListHandler extends LegacyHandler implements RecordListProviderInter
|
|||
* @var PresetListDataHandlers
|
||||
*/
|
||||
private $presetHandlers;
|
||||
protected RecordMapperRunnerInterface $entityRecordMapperRunner;
|
||||
protected EntityRecordMapperRunner $entityRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* SystemConfigHandler constructor.
|
||||
|
@ -71,6 +71,7 @@ class RecordListHandler extends LegacyHandler implements RecordListProviderInter
|
|||
* @param ListDataHandler $listDataHandler
|
||||
* @param PresetListDataHandlers $presetHandlers
|
||||
* @param RequestStack $session
|
||||
* @param EntityRecordMapperRunner $entityRecordMapperRunner
|
||||
*/
|
||||
public function __construct(
|
||||
string $projectDir,
|
||||
|
@ -82,10 +83,16 @@ class RecordListHandler extends LegacyHandler implements RecordListProviderInter
|
|||
ListDataHandler $listDataHandler,
|
||||
PresetListDataHandlers $presetHandlers,
|
||||
RequestStack $session,
|
||||
RecordMapperRunnerInterface $entityRecordMapperRunner,
|
||||
EntityRecordMapperRunner $entityRecordMapperRunner
|
||||
) {
|
||||
parent::__construct($projectDir, $legacyDir, $legacySessionName, $defaultSessionName, $legacyScopeState,
|
||||
$session);
|
||||
parent::__construct(
|
||||
$projectDir,
|
||||
$legacyDir,
|
||||
$legacySessionName,
|
||||
$defaultSessionName,
|
||||
$legacyScopeState,
|
||||
$session
|
||||
);
|
||||
$this->moduleNameMapper = $moduleNameMapper;
|
||||
$this->listDataHandler = $listDataHandler;
|
||||
$this->presetHandlers = $presetHandlers;
|
||||
|
@ -143,7 +150,8 @@ class RecordListHandler extends LegacyHandler implements RecordListProviderInter
|
|||
'ordering' => $listData->getOrdering()
|
||||
],
|
||||
$listData->getMeta() ?? []
|
||||
));
|
||||
)
|
||||
);
|
||||
|
||||
$this->close();
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace App\Data\Resolver;
|
|||
|
||||
use ApiPlatform\GraphQl\Resolver\QueryItemResolverInterface;
|
||||
use App\Data\Entity\Record;
|
||||
use App\Data\Service\Record\ApiRecordMappers\ApiRecordMapperRunner;
|
||||
use App\Data\Service\RecordProviderInterface;
|
||||
use Exception;
|
||||
|
||||
|
@ -38,14 +39,20 @@ class RecordItemResolver implements QueryItemResolverInterface
|
|||
* @var RecordProviderInterface
|
||||
*/
|
||||
protected $recordHandler;
|
||||
private ApiRecordMapperRunner $apiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* RecordViewResolver constructor.
|
||||
* @param RecordProviderInterface $recordHandler
|
||||
* @param ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
*/
|
||||
public function __construct(RecordProviderInterface $recordHandler)
|
||||
public function __construct(
|
||||
RecordProviderInterface $recordHandler,
|
||||
ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
)
|
||||
{
|
||||
$this->recordHandler = $recordHandler;
|
||||
$this->apiRecordMapperRunner = $apiRecordMapperRunner;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -60,6 +67,9 @@ class RecordItemResolver implements QueryItemResolverInterface
|
|||
$module = $context['args']['module'] ?? '';
|
||||
$record = $context['args']['record'] ?? '';
|
||||
|
||||
return $this->recordHandler->getRecord($module, $record);
|
||||
$record = $this->recordHandler->getRecord($module, $record);
|
||||
$this->apiRecordMapperRunner->toExternal($record, 'retrieve');
|
||||
|
||||
return $record;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,23 +28,28 @@
|
|||
namespace App\Data\Resolver;
|
||||
|
||||
use ApiPlatform\GraphQl\Resolver\QueryItemResolverInterface;
|
||||
use App\Data\LegacyHandler\RecordListHandler;
|
||||
use App\Data\Entity\Record;
|
||||
use App\Data\Entity\RecordList;
|
||||
use App\Data\LegacyHandler\RecordListHandler;
|
||||
use App\Data\Service\Record\ApiRecordMappers\ApiRecordMapperRunner;
|
||||
|
||||
class RecordListResolver implements QueryItemResolverInterface
|
||||
{
|
||||
/**
|
||||
* @var RecordListHandler
|
||||
*/
|
||||
protected $recordListHandler;
|
||||
protected RecordListHandler $recordListHandler;
|
||||
protected ApiRecordMapperRunner $apiRecordMapperRunner;
|
||||
|
||||
/**
|
||||
* RecordListResolver constructor.
|
||||
* @param RecordListHandler $recordListHandler
|
||||
* @param ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
*/
|
||||
public function __construct(RecordListHandler $recordListHandler)
|
||||
public function __construct(
|
||||
RecordListHandler $recordListHandler,
|
||||
ApiRecordMapperRunner $apiRecordMapperRunner
|
||||
)
|
||||
{
|
||||
$this->recordListHandler = $recordListHandler;
|
||||
$this->apiRecordMapperRunner = $apiRecordMapperRunner;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -55,13 +60,24 @@ class RecordListResolver implements QueryItemResolverInterface
|
|||
*/
|
||||
public function __invoke($item, array $context): RecordList
|
||||
{
|
||||
|
||||
$module = $context['args']['module'] ?? '';
|
||||
$limit = $context['args']['limit'] ?? -1;
|
||||
$offset = $context['args']['offset'] ?? -1;
|
||||
$criteria = $context['args']['criteria'] ?? [];
|
||||
$sort = $context['args']['sort'] ?? [];
|
||||
|
||||
return $this->recordListHandler->getList($module, $criteria, $offset, $limit, $sort);
|
||||
$list = $this->recordListHandler->getList($module, $criteria, $offset, $limit, $sort);
|
||||
|
||||
$mappedRecords = [];
|
||||
foreach ($list->getRecords() as $recordArray) {
|
||||
$record = new Record();
|
||||
$record->fromArray($recordArray);
|
||||
|
||||
$this->apiRecordMapperRunner->toExternal($record, 'list');
|
||||
$mappedRecords[] = $record->toArray();
|
||||
}
|
||||
|
||||
$list->setRecords($mappedRecords);
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,24 +25,23 @@
|
|||
* the words "Supercharged by SuiteCRM".
|
||||
*/
|
||||
|
||||
namespace App\Data\Service\Record\ApiRecordMappers;
|
||||
|
||||
namespace App\Data\Service\Record\Mappers;
|
||||
|
||||
use App\Data\Service\Record\Mappers\BaseFieldMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\BaseFieldTypeMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\BaseRecordMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunner;
|
||||
use App\FieldDefinitions\Service\FieldDefinitionsProviderInterface;
|
||||
|
||||
class RecordMapperRunnerFactory implements RecordMapperRunnerFactoryInterface
|
||||
class ApiRecordMapperRunner extends RecordMapperRunner
|
||||
{
|
||||
public static function create(
|
||||
BaseFieldMapperRegistry $fieldMapperRegistry,
|
||||
BaseFieldTypeMapperRegistry $fieldTypeMapperRegistry,
|
||||
BaseRecordMapperRegistry $recordMapperRegistry,
|
||||
|
||||
public function __construct(
|
||||
BaseFieldMapperRegistry $apiFieldMapperRegistry,
|
||||
BaseFieldTypeMapperRegistry $apiFieldTypeMapperRegistry,
|
||||
BaseRecordMapperRegistry $apiRecordMapperRegistry,
|
||||
FieldDefinitionsProviderInterface $fieldDefinitions
|
||||
): RecordMapperRunnerInterface {
|
||||
return new RecordMapperRunner(
|
||||
$fieldMapperRegistry,
|
||||
$fieldTypeMapperRegistry,
|
||||
$recordMapperRegistry,
|
||||
$fieldDefinitions
|
||||
);
|
||||
) {
|
||||
parent::__construct($apiFieldMapperRegistry, $apiFieldTypeMapperRegistry, $apiRecordMapperRegistry, $fieldDefinitions);
|
||||
}
|
||||
}
|
|
@ -25,9 +25,22 @@
|
|||
* the words "Supercharged by SuiteCRM".
|
||||
*/
|
||||
|
||||
namespace App\Data\Service\Record\EntityRecordMappers;
|
||||
|
||||
namespace App\Data\Service\Record\Mappers;
|
||||
use App\Data\Service\Record\Mappers\BaseFieldMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\BaseFieldTypeMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\BaseRecordMapperRegistry;
|
||||
use App\Data\Service\Record\Mappers\RecordMapperRunner;
|
||||
use App\FieldDefinitions\Service\FieldDefinitionsProviderInterface;
|
||||
|
||||
interface RecordMapperRunnerFactoryInterface
|
||||
class EntityRecordMapperRunner extends RecordMapperRunner
|
||||
{
|
||||
public function __construct(
|
||||
BaseFieldMapperRegistry $entityFieldMapperRegistry,
|
||||
BaseFieldTypeMapperRegistry $entityFieldTypeMapperRegistry,
|
||||
BaseRecordMapperRegistry $entityRecordMapperRegistry,
|
||||
FieldDefinitionsProviderInterface $fieldDefinitions
|
||||
) {
|
||||
parent::__construct($entityFieldMapperRegistry, $entityFieldTypeMapperRegistry, $entityRecordMapperRegistry, $fieldDefinitions);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue