Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SequenceManager.php
Go to the documentation of this file.
1 <?php
8 
9 use Psr\Log\LoggerInterface;
11 
16 {
20  private $sequenceRegistry;
21 
25  private $metadataPool;
26 
30  private $logger;
31 
35  private $appResource;
36 
43  public function __construct(
44  MetadataPool $metadataPool,
45  SequenceRegistry $sequenceRegistry,
46  LoggerInterface $logger,
47  \Magento\Framework\App\ResourceConnection $appResource
48  ) {
49  $this->metadataPool = $metadataPool;
50  $this->sequenceRegistry = $sequenceRegistry;
51  $this->logger = $logger;
52  $this->appResource = $appResource;
53  }
54 
65  public function force($entityType, $identifier)
66  {
67  $sequenceInfo = $this->sequenceRegistry->retrieve($entityType);
68 
69  if (!isset($sequenceInfo['sequenceTable'])) {
70  throw new \Exception(
71  'TODO: use correct Exception class' . PHP_EOL . ' Sequence table doesn\'t exists'
72  );
73  }
74 
75  try {
76  $metadata = $this->metadataPool->getMetadata($entityType);
77 
78  $connection = $this->appResource->getConnectionByName(
79  $metadata->getEntityConnectionName()
80  );
81 
82  return $connection->insert(
83  $this->appResource->getTableName($sequenceInfo['sequenceTable']),
84  ['sequence_value' => $identifier]
85  );
86  } catch (\Exception $e) {
87  $this->logger->critical($e->getMessage(), $e->getTrace());
88 
89  throw new \Exception('TODO: use correct Exception class' . PHP_EOL . $e->getMessage());
90  }
91  }
92 
99  public function delete($entityType, $identifier)
100  {
101  $metadata = $this->metadataPool->getMetadata($entityType);
102  $sequenceInfo = $this->sequenceRegistry->retrieve($entityType);
103  if (!isset($sequenceInfo['sequenceTable'])) {
104  throw new \Exception('TODO: use correct Exception class' . PHP_EOL . ' Sequence table doesn\'t exists');
105  }
106  try {
107  $connection = $this->appResource->getConnectionByName($metadata->getEntityConnectionName());
108  return $connection->delete(
109  $this->appResource->getTableName($sequenceInfo['sequenceTable']),
110  ['sequence_value = ?' => $identifier]
111  );
112  } catch (\Exception $e) {
113  $this->logger->critical($e->getMessage(), $e->getTrace());
114  throw new \Exception('TODO: use correct Exception class' . PHP_EOL . $e->getMessage());
115  }
116  }
117 }
$logger
__construct(MetadataPool $metadataPool, SequenceRegistry $sequenceRegistry, LoggerInterface $logger, \Magento\Framework\App\ResourceConnection $appResource)
$connection
Definition: bulk.php:13