Add hash to Subject
The hash gives us a new column in our table, which we can use to query a specific combination of args and key more efficient [MAILPOET-4966]
This commit is contained in:
@ -27,10 +27,15 @@ class Subject {
|
|||||||
return $this->args;
|
return $this->args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hash(): string {
|
||||||
|
return md5($this->getKey() . Json::encode($this->getArgs()));
|
||||||
|
}
|
||||||
|
|
||||||
public function toArray(): array {
|
public function toArray(): array {
|
||||||
return [
|
return [
|
||||||
'key' => $this->getKey(),
|
'key' => $this->getKey(),
|
||||||
'args' => Json::encode($this->getArgs()),
|
'args' => Json::encode($this->getArgs()),
|
||||||
|
'hash' => $this->hash(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,10 +39,10 @@ class AutomationRunStorage {
|
|||||||
return $automationRunId;
|
return $automationRunId;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'insert into ' . esc_sql($this->subjectTable) . ' (`automation_run_id`, `key`, `args`) values %s';
|
$sql = 'insert into ' . esc_sql($this->subjectTable) . ' (`automation_run_id`, `key`, `args`, `hash`) values %s';
|
||||||
$values = [];
|
$values = [];
|
||||||
foreach ($subjectTableData as $entry) {
|
foreach ($subjectTableData as $entry) {
|
||||||
$values[] = (string)$this->wpdb->prepare("(%d,%s,%s)", $automationRunId, $entry['key'], $entry['args']);
|
$values[] = (string)$this->wpdb->prepare("(%d,%s,%s,%s)", $automationRunId, $entry['key'], $entry['args'], $entry['hash']);
|
||||||
}
|
}
|
||||||
$sql = sprintf($sql, implode(',', $values));
|
$sql = sprintf($sql, implode(',', $values));
|
||||||
$result = $this->wpdb->query($sql);
|
$result = $this->wpdb->query($sql);
|
||||||
|
@ -25,7 +25,9 @@ class Migration_20230215_050813 extends Migration {
|
|||||||
'`automation_run_id` int(11) unsigned NOT NULL',
|
'`automation_run_id` int(11) unsigned NOT NULL',
|
||||||
'`key` varchar(191)',
|
'`key` varchar(191)',
|
||||||
'`args` longtext',
|
'`args` longtext',
|
||||||
|
'`hash` varchar(191)',
|
||||||
'index (automation_run_id)',
|
'index (automation_run_id)',
|
||||||
|
'index (hash)',
|
||||||
]);
|
]);
|
||||||
$this->moveSubjectData();
|
$this->moveSubjectData();
|
||||||
$this->dropSubjectColumn();
|
$this->dropSubjectColumn();
|
||||||
|
Reference in New Issue
Block a user