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_total int(11) unsigned NOT NULL DEFAULT 0,',
'count_processed 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,', 'count_to_process int(11) unsigned NOT NULL DEFAULT 0,',
'meta longtext,',
'created_at TIMESTAMP NULL,', 'created_at TIMESTAMP NULL,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', 'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
'deleted_at TIMESTAMP NULL,', 'deleted_at TIMESTAMP NULL,',

View File

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

View File

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

View File

@ -96,6 +96,22 @@ class SendingQueueTest extends \MailPoetTest {
expect(json_decode($queue->newsletter_rendered_body, true))->equals($data); 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() { function testItReencodesSerializedObjectToJsonEncoded() {
$queue = $this->queue; $queue = $this->queue;
$newsletter_rendered_body = $this->rendered_body; $newsletter_rendered_body = $this->rendered_body;