Skip to content

Commit

Permalink
Add proper injection of HarvestRunRepository to HarvestPlanListBuilder.
Browse files Browse the repository at this point in the history
  • Loading branch information
Steve Wirt authored and Steve Wirt committed Dec 31, 2024
1 parent 75c530c commit 01d7288
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 8 deletions.
2 changes: 1 addition & 1 deletion modules/harvest/src/Entity/HarvestRunRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class HarvestRunRepository {
/**
* Entity storage service for the harvest_run entity type.
*/
public EntityStorageInterface $runStorage;
protected EntityStorageInterface $runStorage;

/**
* Database connection service.
Expand Down
17 changes: 13 additions & 4 deletions modules/harvest/src/HarvestPlanListBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Link;
use Drupal\Core\Url;
Expand All @@ -28,13 +29,20 @@ class HarvestPlanListBuilder extends EntityListBuilder {
*/
protected HarvestRunRepository $harvestRunRepository;

/**
* Entity storage service for the harvest_run entity type.
*
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected EntityStorageInterface $harvestRunStorage;

/**
* {@inheritDoc}
*/
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
$builder = parent::createInstance($container, $entity_type);
$builder->harvestService = $container->get('dkan.harvest.service');
$builder->harvestRunRepository = $container->get('dkan.harvest.storage.harvest_run_repository');
$builder->harvestRunStorage = $container->get('entity_type.manager')->getStorage('harvest_run');
return $builder;
}

Expand Down Expand Up @@ -70,9 +78,10 @@ public function buildRow(EntityInterface $entity) {
$harvest_plan_id = $entity->get('id')->getString();
$run_entity = NULL;

if ($run_id = $this->harvestService->runRepository->getLastHarvestRunId($harvest_plan_id)) {
if ($run_id = $this->harvestRunRepository->getLastHarvestRunId($harvest_plan_id)) {
// There is a run identifier, so we should get that info.
$run_entity = $this->harvestRunRepository->runStorage->load($run_id);
/** @var \Drupal\harvest\HarvestRunInterface $run_entity */
$run_entity = $this->harvestRunStorage->load($run_id);
}

// Default values for a row if there's no info.
Expand All @@ -96,7 +105,7 @@ public function buildRow(EntityInterface $entity) {
'data' => $extract_status,
'class' => strtolower($extract_status),
];
$row['last_run'] = date('m/d/y H:m:s T', $run_id);
$row['last_run'] = date('m/d/y H:m:s T', $run_entity->get('timestamp')->value);
$row['dataset_count'] = $interpreter->countProcessed();
}
// Don't call parent::buildRow() because we don't want operations (yet).
Expand Down
2 changes: 1 addition & 1 deletion modules/harvest/src/HarvestService.php
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ public function runHarvest($plan_id) {
$result['status']['orphan_ids'] =
$this->getOrphanIdsFromResult($plan_id, $result['status']['extracted_items_ids']);
$this->processOrphanIds($result['status']['orphan_ids']);

// For legacy reasons, the identifier is the timestamp.
$result['identifier'] = $timestamp;
$this->runRepository->storeRun($result, $plan_id, $timestamp);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,14 @@ public function testGoodHarvestRun() {
$this->registerHarvestPlan($harvest_service, $plan_id);
$run_result = $harvest_service->runHarvest($plan_id);
$this->assertEquals('SUCCESS', $run_result['status']['extract'] ?? 'not_a_successful_run');
$run_id = $harvest_service->runRepository->getLastHarvestRunId($plan_id);

$response = $list_builder->render();

$json = json_encode($response);
$strings = array_merge(self::HARVEST_HEADERS, [
'harvest_link',
'SUCCESS',
json_encode(date('m/d/y H:m:s T', $run_id)),
json_encode(date('m/d/y H:m:s T', $run_result['identifier'])),
'2',
]);
foreach ($strings as $string) {
Expand Down

0 comments on commit 01d7288

Please sign in to comment.