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:
David Remer
2023-02-16 07:15:25 +02:00
committed by Aschepikov
parent 230c9f183d
commit 9e016bfc07
3 changed files with 9 additions and 2 deletions

View File

@ -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(),
];
}

View File

@ -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);

View File

@ -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();