Give the index manager a default index
This commit is contained in:
parent
15f24fcb59
commit
be953b62d7
|
@ -31,8 +31,7 @@ class PopulateCommand extends Command
|
||||||
{
|
{
|
||||||
$output->writeln('Populating indexes');
|
$output->writeln('Populating indexes');
|
||||||
|
|
||||||
$populator = $this->container->get('foq_elastica.populator');
|
$populator = $this->container->get('foq_elastica.populator')->populate();
|
||||||
$populator->populate();
|
|
||||||
|
|
||||||
$output->writeln('Done');
|
$output->writeln('Done');
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Definition;
|
use Symfony\Component\DependencyInjection\Definition;
|
||||||
|
use Symfony\Component\DependencyInjection\Reference;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
|
|
||||||
class FOQElasticaExtension extends Extension
|
class FOQElasticaExtension extends Extension
|
||||||
|
@ -33,7 +34,7 @@ class FOQElasticaExtension extends Extension
|
||||||
|
|
||||||
$clientsByName = $this->loadClients($config['clients'], $container);
|
$clientsByName = $this->loadClients($config['clients'], $container);
|
||||||
$indexesByName = $this->loadIndexes($config['indexes'], $container, $clientsByName, $config['default_client']);
|
$indexesByName = $this->loadIndexes($config['indexes'], $container, $clientsByName, $config['default_client']);
|
||||||
$this->loadIndexManager($indexesByName, $container);
|
$this->loadIndexManager($indexesByName, $config['default_index'], $container);
|
||||||
|
|
||||||
$container->setAlias('foq_elastica.client', sprintf('foq_elastica.client.%s', $config['default_client']));
|
$container->setAlias('foq_elastica.client', sprintf('foq_elastica.client.%s', $config['default_client']));
|
||||||
$container->setAlias('foq_elastica.index', sprintf('foq_elastica.index.%s', $config['default_index']));
|
$container->setAlias('foq_elastica.index', sprintf('foq_elastica.index.%s', $config['default_index']));
|
||||||
|
@ -93,9 +94,10 @@ class FOQElasticaExtension extends Extension
|
||||||
*
|
*
|
||||||
* @return null
|
* @return null
|
||||||
**/
|
**/
|
||||||
public function loadIndexManager(array $indexDefs, ContainerBuilder $container)
|
public function loadIndexManager(array $indexDefs, $defaultIndexId, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$managerDef = $container->getDefinition('foq_elastica.index_manager');
|
$managerDef = $container->getDefinition('foq_elastica.index_manager');
|
||||||
$managerDef->setArgument(0, $indexDefs);
|
$managerDef->setArgument(0, $indexDefs);
|
||||||
|
$managerDef->setArgument(1, new Reference('foq_elastica.index'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,17 @@
|
||||||
|
|
||||||
namespace FOQ\ElasticaBundle;
|
namespace FOQ\ElasticaBundle;
|
||||||
|
|
||||||
|
use InvalidArgumentException;
|
||||||
|
|
||||||
class IndexManager
|
class IndexManager
|
||||||
{
|
{
|
||||||
protected $indexes;
|
protected $indexes;
|
||||||
|
protected $defaultIndex;
|
||||||
|
|
||||||
public function __construct(array $indexes)
|
public function __construct(array $indexes, $defaultIndex)
|
||||||
{
|
{
|
||||||
$this->indexes = $indexes;
|
$this->indexes = $indexes;
|
||||||
|
$this->defaultIndex = $defaultIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,14 +26,29 @@ class IndexManager
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroys and creates all registered indexes
|
* Gets an index by its name
|
||||||
*
|
*
|
||||||
* @return null
|
* @return Elastica_Index
|
||||||
*/
|
**/
|
||||||
public function createAllIndexes()
|
public function getIndex($name)
|
||||||
{
|
{
|
||||||
foreach ($this->getAllIndexes() as $index) {
|
if (!$name) {
|
||||||
$index->create();
|
return $this->getDefaultIndex();
|
||||||
}
|
}
|
||||||
|
if (!isset($this->indexes[$name])) {
|
||||||
|
throw new InvalidArgumentException(sprintf('The index "%s" does not exist', $name));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->indexes[$name];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the default index
|
||||||
|
*
|
||||||
|
* @return Elastica_Index
|
||||||
|
**/
|
||||||
|
public function getDefaultIndex()
|
||||||
|
{
|
||||||
|
return $this->defaultIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue