archivesspace-8.x-1.x-dev/src/Commands/ArchivesSpaceResourceDescriptionQueueCommand.php
src/Commands/ArchivesSpaceResourceDescriptionQueueCommand.php
<?php
namespace Drupal\archivesspace\Commands;
use Drupal\archivesspace\ResourceDescriptionBatchWorker;
use Drush\Commands\DrushCommands;
/**
* A Drush commandfile.
*/
class ArchivesSpaceResourceDescriptionQueueCommand extends DrushCommands {
/**
* Batch Update Builder.
*
* @var \Drupal\archivesspace\ResourceDescriptionBatchWorker
*/
protected $batchUpdateBuilder;
/**
* Constructor.
*
* @param \Drupal\archivesspace\ResourceDescriptionBatchWorker $bub
* The class responsible for building batch updates for processing.
*/
public function __construct(ResourceDescriptionBatchWorker $bub) {
$this->batchUpdateBuilder = $bub;
}
/**
* Resource description file updates.
*
* @param array $options
* Additional options for the command.
*
* @option max-items Maximum number of update requests to process.
* @option items-per-batch Number of update requests to process per batch group.
*
* @command archivesspace:resource-description-queue
* @aliases asrdq, as-rdq
*
* @usage archivesspace:resource-description-queue
* Process pending resource description file updates.
* @usage archivesspace:update --max-items=[items]
* Limit run to a certain number of items.
* @usage archivesspace:update --items-per-batch=[items]
* Set how many items to run per group of items.
*/
public function runResourceDescriptionQueue(
array $options = [
'max-items' => self::REQ,
'items-per-batch' => self::REQ,
],
) {
// Let Batch Update Builder do the sanity checking.
if (!empty($options['items-per-batch'])) {
$this->batchUpdateBuilder->setFilesPerBatch($options['items-per-batch']);
}
if (!empty($options['max-items'])) {
$this->batchUpdateBuilder->setMaxItems($options['max-items']);
}
// @todo add command-line options to provide connection information.
// That will necessitate instantiating it with
// ArchivesSpaceSession::withConnectionInfo() and then setting it with
// $this->batchUpdateBuilder->setArchivesSpaceSession().
//
// Build and run the batch.
if ($batch = $this->batchUpdateBuilder->buildBatchDefinition()) {
batch_set($batch);
drush_backend_batch_process();
$this->logger()->notice("Done.");
}
}
}
