Adds meta column to sending queues

This commit is contained in:
Vlad
2018-04-28 21:40:57 -04:00
parent b7db18425a
commit 32e02cbf52
4 changed files with 30 additions and 1 deletions

View File

@ -148,6 +148,7 @@ class Migrator {
'count_total int(11) unsigned NOT NULL DEFAULT 0,',
'count_processed int(11) unsigned NOT NULL DEFAULT 0,',
'count_to_process int(11) unsigned NOT NULL DEFAULT 0,',
'meta longtext,',
'created_at TIMESTAMP NULL,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
'deleted_at TIMESTAMP NULL,',

View File

@ -60,6 +60,12 @@ class SendingQueue extends Model {
json_encode($this->encodeEmojisInBody($this->newsletter_rendered_body))
);
}
if(!Helpers::isJson($this->meta)) {
$this->set(
'meta',
json_encode($this->meta)
);
}
parent::save();
$this->newsletter_rendered_body = $this->getNewsletterRenderedBody();
return $this;
@ -86,6 +92,10 @@ class SendingQueue extends Model {
$rendered_newsletter;
}
function getMeta() {
return (Helpers::isJson($this->meta)) ? json_decode($this->meta, true) : $this->meta;
}
function encodeEmojisInBody($newsletter_rendered_body) {
if(is_array($newsletter_rendered_body)) {
foreach($newsletter_rendered_body as $key => $value) {
@ -126,6 +136,7 @@ class SendingQueue extends Model {
function asArray() {
$model = parent::asArray();
$model['newsletter_rendered_body'] = $this->getNewsletterRenderedBody();
$model['meta'] = $this->getMeta();
return $model;
}

View File

@ -30,7 +30,8 @@ class Sending {
'newsletter_rendered_body',
'count_total',
'count_processed',
'count_to_process'
'count_to_process',
'meta'
);
private $common_fields = array(

View File

@ -96,6 +96,22 @@ class SendingQueueTest extends \MailPoetTest {
expect(json_decode($queue->newsletter_rendered_body, true))->equals($data);
}
function testItJsonEncodesMetaWhenSaving() {
$queue = SendingQueue::create();
$meta = array(
'some' => 'value'
);
$queue->task_id = 0;
$queue->newsletter_id = 1;
$queue->meta = $meta;
$queue->save();
$queue = SendingQueue::findOne($queue->id);
expect(Helpers::isJson($queue->meta))->true();
expect(json_decode($queue->meta, true))->equals($meta);
}
function testItReencodesSerializedObjectToJsonEncoded() {
$queue = $this->queue;
$newsletter_rendered_body = $this->rendered_body;