NAME

   Minion::Backend::SQLite - SQLite backend for Minion job queue

SYNOPSIS

     use Minion::Backend::SQLite;

     my $backend = Minion::Backend::SQLite->new('sqlite:test.db');

DESCRIPTION

   Minion::Backend::SQLite is a backend for Minion based on Mojo::SQLite.
   All necessary tables will be created automatically with a set of
   migrations named minion. If no connection string or :temp: is provided,
   the database will be created in a temporary directory.

ATTRIBUTES

   Minion::Backend::SQLite inherits all attributes from Minion::Backend
   and implements the following new ones.

sqlite

     my $sqlite = $backend->sqlite;
     $backend   = $backend->sqlite(Mojo::SQLite->new);

   Mojo::SQLite object used to store all data.

METHODS

   Minion::Backend::SQLite inherits all methods from Minion::Backend and
   implements the following new ones.

new

     my $backend = Minion::Backend::SQLite->new;
     my $backend = Minion::Backend::SQLite->new(':temp:');
     my $backend = Minion::Backend::SQLite->new('sqlite:test.db');
     my $backend = Minion::Backend::SQLite->new->tap(sub { $_->sqlite->from_filename('C:\\foo\\bar.db') });

   Construct a new Minion::Backend::SQLite object.

dequeue

     my $job_info = $backend->dequeue($worker_id, 0.5);
     my $job_info = $backend->dequeue($worker_id, 0.5, {queues => ['important']});

   Wait for job, dequeue it and transition from inactive to active state
   or return undef if queues were empty.

   These options are currently available:

   queues

       queues => ['important']

     One or more queues to dequeue jobs from, defaults to default.

   These fields are currently available:

   args

       args => ['foo', 'bar']

     Job arguments.

   attempts

       attempts => 25

     Number of times performing this job will be attempted, defaults to 1.

   id

       id => '10023'

     Job ID.

   retries

       retries => 3

     Number of times job has been retried.

   task

       task => 'foo'

     Task name.

enqueue

     my $job_id = $backend->enqueue('foo');
     my $job_id = $backend->enqueue(foo => [@args]);
     my $job_id = $backend->enqueue(foo => [@args] => {priority => 1});

   Enqueue a new job with inactive state.

   These options are currently available:

   attempts

       attempts => 25

     Number of times performing this job will be attempted, defaults to 1.

   delay

       delay => 10

     Delay job for this many seconds (from now).

   priority

       priority => 5

     Job priority, defaults to 0.

   queue

       queue => 'important'

     Queue to put job in, defaults to default.

fail_job

     my $bool = $backend->fail_job($job_id, $retries);
     my $bool = $backend->fail_job($job_id, $retries, 'Something went wrong!');
     my $bool = $backend->fail_job(
       $job_id, $retries, {msg => 'Something went wrong!'});

   Transition from active to failed state.

finish_job

     my $bool = $backend->finish_job($job_id, $retries);
     my $bool = $backend->finish_job($job_id, $retries, 'All went well!');
     my $bool = $backend->finish_job($job_id, $retries, {msg => 'All went well!'});

   Transition from active to finished state.

job_info

     my $job_info = $backend->job_info($job_id);

   Get information about a job or return undef if job does not exist.

     # Check job state
     my $state = $backend->job_info($job_id)->{state};

     # Get job result
     my $result = $backend->job_info($job_id)->{result};

   These fields are currently available:

   args

       args => ['foo', 'bar']

     Job arguments.

   attempts

       attempts => 25

     Number of times performing this job will be attempted, defaults to 1.

   created

       created => 784111777

     Time job was created.

   delayed

       delayed => 784111777

     Time job was delayed to.

   finished

       finished => 784111777

     Time job was finished.

   priority

       priority => 3

     Job priority.

   queue

       queue => 'important'

     Queue name.

   result

       result => 'All went well!'

     Job result.

   retried

       retried => 784111777

     Time job has been retried.

   retries

       retries => 3

     Number of times job has been retried.

   started

       started => 784111777

     Time job was started.

   state

       state => 'inactive'

     Current job state, usually active, failed, finished or inactive.

   task

       task => 'foo'

     Task name.

   worker

       worker => '154'

     Id of worker that is processing the job.

list_jobs

     my $batch = $backend->list_jobs($offset, $limit);
     my $batch = $backend->list_jobs($offset, $limit, {state => 'inactive'});

   Returns the same information as "job_info" but in batches.

   These options are currently available:

   state

       state => 'inactive'

     List only jobs in this state.

   task

       task => 'test'

     List only jobs for this task.

list_workers

     my $batch = $backend->list_workers($offset, $limit);

   Returns the same information as "worker_info" but in batches.

register_worker

     my $worker_id = $backend->register_worker;
     my $worker_id = $backend->register_worker($worker_id);

   Register worker or send heartbeat to show that this worker is still
   alive.

remove_job

     my $bool = $backend->remove_job($job_id);

   Remove failed, finished or inactive job from queue.

repair

     $backend->repair;

   Repair worker registry and job queue if necessary.

reset

     $backend->reset;

   Reset job queue.

retry_job

     my $bool = $backend->retry_job($job_id, $retries);
     my $bool = $backend->retry_job($job_id, $retries, {delay => 10});

   Transition from failed or finished state back to inactive.

   These options are currently available:

   delay

       delay => 10

     Delay job for this many seconds (from now).

   priority

       priority => 5

     Job priority.

   queue

       queue => 'important'

     Queue to put job in.

stats

     my $stats = $backend->stats;

   Get statistics for jobs and workers.

unregister_worker

     $backend->unregister_worker($worker_id);

   Unregister worker.

worker_info

     my $worker_info = $backend->worker_info($worker_id);

   Get information about a worker or return undef if worker does not
   exist.

     # Check worker host
     my $host = $backend->worker_info($worker_id)->{host};

   These fields are currently available:

   host

       host => 'localhost'

     Worker host.

   jobs

       jobs => ['10023', '10024', '10025', '10029']

     Ids of jobs the worker is currently processing.

   notified

       notified => 784111777

     Last time worker sent a heartbeat.

   pid

       pid => 12345

     Process id of worker.

   started

       started => 784111777

     Time worker was started.

BUGS

   Report any issues on the public bugtracker.

AUTHOR

   Dan Book <[email protected]>

COPYRIGHT AND LICENSE

   This software is Copyright (c) 2015 by Dan Book.

   This is free software, licensed under:

     The Artistic License 2.0 (GPL Compatible)

SEE ALSO

   Minion, Mojo::SQLite