/usr/local/CPAN/KiokuDB/KiokuDB/Backend/Role/Query/GIN.pm
#!/usr/bin/perl
package KiokuDB::Backend::Role::Query::GIN;
use Moose::Role;
use namespace::clean -except => 'meta';
with qw(
Search::GIN::Extract
Search::GIN::Driver
);
has distinct => (
isa => "Bool",
is => "rw",
default => 0, # FIXME what should the default be?
);
sub search {
my ( $self, $query, @args ) = @_;
my %args = (
distinct => $self->distinct,
@args,
);
my @spec = $query->extract_values($self);
my $ids = $self->fetch_entries(@spec);
$ids = unique($ids) if $args{distinct};
return $ids->filter(sub {[ $self->get(@$_) ]});
}
sub search_filter {
my ( $self, $objects, $query, @args ) = @_;
return $objects->filter(sub { [ grep { $query->consistent($self, $_) } @$_ ] });
}
__PACKAGE__
__END__