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;
|
||||
}
|
||||
|
||||
public function hash(): string {
|
||||
return md5($this->getKey() . Json::encode($this->getArgs()));
|
||||
}
|
||||
|
||||
public function toArray(): array {
|
||||
return [
|
||||
'key' => $this->getKey(),
|
||||
'args' => Json::encode($this->getArgs()),
|
||||
'hash' => $this->hash(),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -39,10 +39,10 @@ class AutomationRunStorage {
|
||||
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 = [];
|
||||
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));
|
||||
$result = $this->wpdb->query($sql);
|
||||
|
@ -25,7 +25,9 @@ class Migration_20230215_050813 extends Migration {
|
||||
'`automation_run_id` int(11) unsigned NOT NULL',
|
||||
'`key` varchar(191)',
|
||||
'`args` longtext',
|
||||
'`hash` varchar(191)',
|
||||
'index (automation_run_id)',
|
||||
'index (hash)',
|
||||
]);
|
||||
$this->moveSubjectData();
|
||||
$this->dropSubjectColumn();
|
||||
|
Reference in New Issue
Block a user