single DB poll for new jobs both high and normal priority
This commit is contained in:
50
lib/App/Netdisco/DB/SetOperations.pm
Normal file
50
lib/App/Netdisco/DB/SetOperations.pm
Normal file
@@ -0,0 +1,50 @@
|
||||
package App::Netdisco::DB::SetOperations;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use parent 'DBIx::Class::Helper::ResultSet::SetOperations';
|
||||
|
||||
sub _set_operation {
|
||||
my ( $self, $operation, $other ) = @_;
|
||||
|
||||
my @sql;
|
||||
my @params;
|
||||
|
||||
my $as = $self->_resolved_attrs->{as};
|
||||
|
||||
my @operands = ( $self, ref $other eq 'ARRAY' ? @$other : $other );
|
||||
|
||||
for (@operands) {
|
||||
$self->throw_exception("ResultClass of ResultSets do not match!")
|
||||
unless $self->result_class eq $_->result_class;
|
||||
|
||||
my $attrs = $_->_resolved_attrs;
|
||||
|
||||
$self->throw_exception('ResultSets do not all have the same selected columns!')
|
||||
unless $self->_compare_arrays($as, $attrs->{as});
|
||||
|
||||
my ($sql, @bind) = @{${$_->as_query}};
|
||||
# $sql =~ s/^\s*\((.*)\)\s*$/$1/;
|
||||
$sql = q<(> . $sql . q<)>;
|
||||
|
||||
push @sql, $sql;
|
||||
push @params, @bind;
|
||||
}
|
||||
|
||||
my $query = q<(> . join(" $operation ", @sql). q<)>;
|
||||
|
||||
my $attrs = $self->_resolved_attrs;
|
||||
return $self->result_source->resultset->search(undef, {
|
||||
alias => $self->current_source_alias,
|
||||
from => [{
|
||||
$self->current_source_alias => \[ $query, @params ],
|
||||
-alias => $self->current_source_alias,
|
||||
-source_handle => $self->result_source->handle,
|
||||
}],
|
||||
columns => $attrs->{as},
|
||||
result_class => $self->result_class,
|
||||
});
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user