-
-
Save anonymous/f535136fdf0eacce4594 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/lib/Minion/Backend/Pg.pm b/lib/Minion/Backend/Pg.pm | |
index a110d93..bd92b49 100644 | |
--- a/lib/Minion/Backend/Pg.pm | |
+++ b/lib/Minion/Backend/Pg.pm | |
@@ -2,7 +2,6 @@ package Minion::Backend::Pg; | |
use Mojo::Base 'Minion::Backend'; | |
use Mojo::IOLoop; | |
-use Mojo::JSON qw(decode_json encode_json); | |
use Mojo::Pg; | |
use Sys::Hostname 'hostname'; | |
@@ -29,13 +28,13 @@ sub enqueue { | |
my $options = shift // {}; | |
my $db = $self->pg->db; | |
- return $db->query( | |
+ return $db->json($args)->query( | |
"insert into minion_jobs | |
(args, created, delayed, priority, retries, state, task) | |
values | |
(?, now(), (now() + (interval '1 second' * ?)), ?, ?, ?, ?) | |
- returning id", encode_json($args), $options->{delay} // 0, | |
- $options->{priority} // 0, 0, 'inactive', $task | |
+ returning id", $options->{delay} // 0, $options->{priority} // 0, 0, | |
+ 'inactive', $task | |
)->hash->{id}; | |
} | |
@@ -43,17 +42,14 @@ sub fail_job { shift->_update(1, @_) } | |
sub finish_job { shift->_update(0, @_) } | |
sub job_info { | |
- return undef | |
- unless my $job = shift->pg->db->query( | |
+ return shift->pg->db->query( | |
'select id, args, extract(epoch from created) as created, | |
extract(epoch from delayed) as delayed, | |
extract(epoch from finished) as finished, priority, result, | |
extract(epoch from retried) as retried, retries, | |
extract(epoch from started) as started, state, task, worker | |
from minion_jobs where id = ?', shift | |
- )->hash; | |
- map { $job->{$_} and $job->{$_} = decode_json $job->{$_} } qw(args result); | |
- return $job; | |
+ )->hash; | |
} | |
sub list_jobs { | |
@@ -187,7 +183,7 @@ sub worker_info { | |
sub _try { | |
my ($self, $id) = @_; | |
- return undef unless my $job = $self->pg->db->query( | |
+ return $self->pg->db->query( | |
"update minion_jobs | |
set started = now(), state = 'active', worker = ? | |
from ( | |
@@ -201,19 +197,16 @@ sub _try { | |
where minion_jobs.id = job.id | |
returning minion_jobs.id, args, task", $id, [keys %{$self->minion->tasks}] | |
)->hash; | |
- $job->{args} = decode_json $job->{args}; | |
- | |
- return $job; | |
} | |
sub _update { | |
my ($self, $fail, $id, $result) = @_; | |
- return !!$self->pg->db->query( | |
+ return !!$self->pg->db->json($result)->query( | |
"update minion_jobs | |
set finished = now(), result = ?, state = ? | |
where id = ? and state = 'active' | |
- returning 1", encode_json($result), $fail ? 'failed' : 'finished', $id | |
+ returning 1", $fail ? 'failed' : 'finished', $id | |
)->rows; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment