Open Data Catalog v2.0.0
JobStore.php
Go to the documentation of this file.
1 <?php
2 
4 
6 use Procrastinator\Job\Job;
7 use Drupal\Core\Database\Connection;
8 
13 
14  private $jobClass;
15 
19  public function __construct(string $jobClass, Connection $connection) {
20  if (!$this->validateJobClass($jobClass)) {
21  throw new \Exception("Invalid jobType provided: $jobClass");
22  }
23  $this->jobClass = $jobClass;
24  $this->setOurSchema();
25  parent::__construct($connection);
26  }
27 
31  public function retrieve(string $id) {
32  $result = parent::retrieve($id);
33  return $result->job_data;
34  }
35 
39  protected function getTableName() {
40  $safeClassName = strtolower(preg_replace('/\\\\/', '_', $this->jobClass));
41  return 'jobstore_' . $safeClassName;
42  }
43 
47  private function setOurSchema() {
48  $schema = [
49  'fields' => [
50  'ref_uuid' => ['type' => 'varchar', 'length' => 128, 'not null' => TRUE],
51  'job_data' => ['type' => 'text', 'length' => 65535],
52  ],
53  'indexes' => [
54  'ref_uuid' => ['ref_uuid'],
55  ],
56  'foreign keys' => [
57  'ref_uuid' => ['table' => 'node', 'columns' => ['uuid' => 'uuid']],
58  ],
59  'primary key' => ['ref_uuid'],
60  ];
61 
62  $this->setSchema($schema);
63  }
64 
68  private function validateJobClass(string $jobClass): bool {
69  if (is_subclass_of($jobClass, Job::class)) {
70  return TRUE;
71  }
72  return FALSE;
73  }
74 
80  protected function prepareData(string $data, string $id = NULL): array {
81  return ['ref_uuid' => $id, 'job_data' => $data];
82  }
83 
89  protected function primaryKey() {
90  return 'ref_uuid';
91  }
92 
93 }
Drupal\dkan_common\Storage\AbstractDatabaseTable\$connection
$connection
Definition: AbstractDatabaseTable.php:20
Drupal\dkan_datastore\Storage
Definition: DatabaseTable.php:3
Drupal\dkan_datastore\Storage\JobStore
Definition: JobStore.php:12
Drupal\dkan_datastore\Storage\JobStore\retrieve
retrieve(string $id)
Definition: JobStore.php:31
Drupal\dkan_datastore\Storage\JobStore\primaryKey
primaryKey()
Definition: JobStore.php:89
Drupal\dkan_common\Storage\AbstractDatabaseTable
Definition: AbstractDatabaseTable.php:16
Drupal\dkan_datastore\Storage\JobStore\prepareData
prepareData(string $data, string $id=NULL)
Definition: JobStore.php:80
Drupal\dkan_datastore\Storage\JobStore\getTableName
getTableName()
Definition: JobStore.php:39
Drupal\dkan_datastore\Storage\JobStore\__construct
__construct(string $jobClass, Connection $connection)
Definition: JobStore.php:19