Eixo-Queue

 view release on metacpan or  search on metacpan

lib/Eixo/Queue/MongoDriver.pm  view on Meta::CPAN

package Eixo::Queue::MongoDriver;

use strict;
use MongoDB;
use Eixo::Base::Clase;
use Eixo::Queue::Job;

has(

	db=>undef,

	collection=>undef,

	host=>'localhost',

	port=>27017,

	__connection=>undef,
);

sub addJob{
	my ($self, $job, $collection) = @_;

	unless($job->isa('Eixo::Queue::Job')){
	
		die(ref($self) . '::addJob: an Eixo::Queue::Job was expected');

	}

	$self->getCollection($collection)->insert_one({
        _id => $job->id,
        %{$job->to_hash}
    });

}

sub updateJob{
	my ($self, $job, $collection) = @_;

	$self->getCollection($collection)->update(

        {_id=>$job->id} ,

        $job->to_hash
    );
}

sub getJob{
	my ($self, $id, $collection, $class) = @_;

    my $method = ($class) ? "__formatClass" : "__format";

	$self->$method(

		[
            $self->getCollection($collection)->find({
		
			    _id=>$id

		    })->next
        ],

        $class

	);
}

sub find{
    my ($self, $query, $sort, $collection, $class) = @_;

    my $method = ($class) ? "__formatClass" : "__format";

    $self->$method(

        [
            $self->getCollection($collection)
        
                ->find($query)
     
                ->sort($sort)

                ->all
        ],

        $class
    );
}

sub getPendingJob{
	my ($self, %args) = @_;

    my $query = {

        status=>"WAITING"
    };  

    $query->{queue} = $args{queue} if(defined $args{queue});



( run in 0.435 second using v1.01-cache-2.11-cpan-524268b4103 )