first commit
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace WapplerSystems\Meilisearch;
|
||||
|
||||
/***************************************************************
|
||||
@@ -66,9 +67,9 @@ class ConnectionManager implements SingletonInterface
|
||||
|
||||
|
||||
/**
|
||||
* @param SystemLanguageRepository $systemLanguageRepository
|
||||
* @param SystemLanguageRepository|null $systemLanguageRepository
|
||||
* @param PagesRepositoryAtExtMeilisearch|null $pagesRepositoryAtExtMeilisearch
|
||||
* @param SiteRepository $siteRepository
|
||||
* @param SiteRepository|null $siteRepository
|
||||
*/
|
||||
public function __construct(
|
||||
SystemLanguageRepository $systemLanguageRepository = null,
|
||||
@@ -77,24 +78,22 @@ class ConnectionManager implements SingletonInterface
|
||||
)
|
||||
{
|
||||
$this->systemLanguageRepository = $systemLanguageRepository ?? GeneralUtility::makeInstance(SystemLanguageRepository::class);
|
||||
$this->siteRepository = $siteRepository ?? GeneralUtility::makeInstance(SiteRepository::class);
|
||||
$this->siteRepository = $siteRepository ?? GeneralUtility::makeInstance(SiteRepository::class);
|
||||
$this->pagesRepositoryAtExtMeilisearch = $pagesRepositoryAtExtMeilisearch ?? GeneralUtility::makeInstance(PagesRepositoryAtExtMeilisearch::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a meilisearch connection for read and write endpoints
|
||||
*
|
||||
* @param array $readNodeConfiguration
|
||||
* @param array $writeNodeConfiguration
|
||||
* @param array $siteConfiguration
|
||||
* @return MeilisearchConnection|object
|
||||
*/
|
||||
public function getMeilisearchConnectionForNodes(array $readNodeConfiguration, array $writeNodeConfiguration)
|
||||
public function getMeilisearchConnectionForNode(array $siteConfiguration)
|
||||
{
|
||||
$connectionHash = md5(json_encode($readNodeConfiguration) . json_encode($writeNodeConfiguration));
|
||||
$connectionHash = md5(json_encode($siteConfiguration));
|
||||
if (!isset(self::$connections[$connectionHash])) {
|
||||
$readNode = $this->createClientFromArray($readNodeConfiguration);
|
||||
$writeNode = $this->createClientFromArray($writeNodeConfiguration);
|
||||
self::$connections[$connectionHash] = GeneralUtility::makeInstance(MeilisearchConnection::class, $readNode, $writeNode);
|
||||
$node = $this->createClientFromArray($siteConfiguration);
|
||||
self::$connections[$connectionHash] = GeneralUtility::makeInstance(MeilisearchConnection::class, $node, $siteConfiguration);
|
||||
}
|
||||
return self::$connections[$connectionHash];
|
||||
}
|
||||
@@ -107,11 +106,11 @@ class ConnectionManager implements SingletonInterface
|
||||
*/
|
||||
public function getConnectionFromConfiguration(array $config)
|
||||
{
|
||||
if(empty($config['read']) && !empty($config['meilisearchHost'])) {
|
||||
if (empty($config) && !empty($config['meilisearchHost'])) {
|
||||
throw new InvalidArgumentException('Invalid registry data please re-initialize your meilisearch connections');
|
||||
}
|
||||
|
||||
return $this->getMeilisearchConnectionForNodes($config['read'], $config['write']);
|
||||
return $this->getMeilisearchConnectionForNode($config);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -131,7 +130,7 @@ class ConnectionManager implements SingletonInterface
|
||||
$config = $site->getMeilisearchConnectionConfiguration($language);
|
||||
$meilisearchConnection = $this->getConnectionFromConfiguration($config);
|
||||
return $meilisearchConnection;
|
||||
} catch(InvalidArgumentException $e) {
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$noMeilisearchConnectionException = $this->buildNoConnectionExceptionForPageAndLanguage($pageId, $language);
|
||||
throw $noMeilisearchConnectionException;
|
||||
}
|
||||
@@ -170,7 +169,7 @@ class ConnectionManager implements SingletonInterface
|
||||
{
|
||||
$meilisearchConnections = [];
|
||||
foreach ($this->siteRepository->getAvailableSites() as $site) {
|
||||
foreach ($site->getAllMeilisearchConnectionConfigurations() as $meilisearchConfiguration) {
|
||||
foreach ($site->getMeilisearchConnectionConfigurations() as $meilisearchConfiguration) {
|
||||
$meilisearchConnections[] = $this->getConnectionFromConfiguration($meilisearchConfiguration);
|
||||
}
|
||||
}
|
||||
@@ -182,18 +181,11 @@ class ConnectionManager implements SingletonInterface
|
||||
* Gets all connections configured for a given site.
|
||||
*
|
||||
* @param Site $site A TYPO3 site
|
||||
* @return MeilisearchConnection[] An array of Meilisearch connection objects (WapplerSystems\Meilisearch\System\Meilisearch\MeilisearchConnection)
|
||||
* @throws NoMeilisearchConnectionFoundException
|
||||
* @return MeilisearchConnection An array of Meilisearch connection objects (WapplerSystems\Meilisearch\System\Meilisearch\MeilisearchConnection)
|
||||
*/
|
||||
public function getConnectionsBySite(Site $site)
|
||||
public function getConnectionBySite(Site $site)
|
||||
{
|
||||
$connections = [];
|
||||
|
||||
foreach ($site->getAllMeilisearchConnectionConfigurations() as $languageId => $meilisearchConnectionConfiguration) {
|
||||
$connections[$languageId] = $this->getConnectionFromConfiguration($meilisearchConnectionConfiguration);
|
||||
}
|
||||
|
||||
return $connections;
|
||||
return $this->getConnectionFromConfiguration($site->getMeilisearchConnectionConfiguration());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -211,7 +203,7 @@ class ConnectionManager implements SingletonInterface
|
||||
. $connection['read']['host'] . ':'
|
||||
. $connection['read']['port']
|
||||
. $connection['read']['path']
|
||||
.' - Write node: '
|
||||
. ' - Write node: '
|
||||
. $connection['write']['host'] . ':'
|
||||
. $connection['write']['port']
|
||||
. $connection['write']['path'];
|
||||
@@ -266,8 +258,9 @@ class ConnectionManager implements SingletonInterface
|
||||
}
|
||||
|
||||
|
||||
private function createClientFromArray(array $configuration) {
|
||||
return new Client(($configuration['scheme'] ?? 'http') . '://'.$configuration['host'].':'.$configuration['port'], $configuration['apiKey'] ?? null, new \TYPO3\CMS\Core\Http\Client(\TYPO3\CMS\Core\Http\Client\GuzzleClientFactory::getClient()));
|
||||
private function createClientFromArray(array $configuration)
|
||||
{
|
||||
return new Client(($configuration['scheme'] ?? 'http') . '://' . $configuration['host'] . ':' . $configuration['port'], $configuration['apiKey'] ?? null, new \TYPO3\CMS\Core\Http\Client(\TYPO3\CMS\Core\Http\Client\GuzzleClientFactory::getClient()));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user