Give the index manager a default index

This commit is contained in:
ornicar 2011-04-12 15:15:48 -07:00
parent 15f24fcb59
commit be953b62d7
3 changed files with 32 additions and 12 deletions

View file

@ -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');
} }

View file

@ -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'));
} }
} }

View file

@ -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;
} }
} }