1 package Koha::BackgroundJob;
4 use JSON qw( encode_json decode_json );
9 use Koha::DateUtils qw( dt_from_string );
10 use Koha::BackgroundJobs;
12 use base qw( Koha::Object );
16 my $stomp = Net::Stomp->new( { hostname => 'localhost', port => '61613' } );
17 $stomp->connect( { login => 'guest', passcode => 'guest' } );
22 my ( $self, $params ) = @_;
24 my $job_type = $params->{job_type};
25 my $job_size = $params->{job_size};
26 my $job_args = $params->{job_args};
28 my $borrowernumber = C4::Context->userenv->{number}; # FIXME Handle non GUI calls
29 my $json_args = encode_json $job_args;
31 $self->_result->result_source->schema->txn_do(
39 enqueued_on => dt_from_string,
40 borrowernumber => $borrowernumber,
45 $job_args->{job_id} = $job_id;
46 $json_args = encode_json $job_args;
48 my $conn = $self->connect;
49 $conn->send_with_receipt( { destination => $job_type, body => $json_args } )
50 or Koha::Exception->throw('Job has not been enqueued');
57 sub process { croak "This method must be subclassed" }
63 my $data_dump = decode_json $self->data;
64 if ( exists $data_dump->{messages} ) {
65 @messages = @{ $data_dump->{messages} };
74 my $data_dump = decode_json $self->data;
75 return $data_dump->{report};
80 $self->status('cancelled')->store;
84 return 'BackgroundJob';