App-ElasticSearch-Utilities
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/App/ElasticSearch/Utilities/QueryString.pm view on Meta::CPAN
package App::ElasticSearch::Utilities::QueryString;
# ABSTRACT: CLI query string fixer
use v5.16;
use warnings;
our $VERSION = '8.8'; # VERSION
use App::ElasticSearch::Utilities qw(:config);
use App::ElasticSearch::Utilities::Query;
use CLI::Helpers qw(:output);
use Module::Pluggable::Object;
use Moo;
use Ref::Util qw(is_arrayref);
use Types::Standard qw(ArrayRef Enum HashRef);
use namespace::autoclean;
my %JOINING = map { $_ => 1 } qw( AND OR );
my %TRAILING = map { $_ => 1 } qw( AND OR NOT );
has 'context' => (
is => 'rw',
isa => Enum[qw(query filter)],
lazy => 1,
default => sub { 'query' },
);
has search_path => (
is => 'rw',
isa => ArrayRef,
default => sub {[]},
);
has default_join => (
is => 'rw',
isa => Enum[qw(AND OR)],
default => sub { 'AND' },
);
has plugins => (
is => 'ro',
isa => ArrayRef,
builder => '_build_plugins',
lazy => 1,
);
has fields_meta => (
is => 'rw',
isa => HashRef,
default => sub { {} },
);
sub expand_query_string {
my $self = shift;
my $query = App::ElasticSearch::Utilities::Query->new(
fields_meta => $self->fields_meta,
);
my @processed = ();
TOKEN: foreach my $token (@_) {
foreach my $p (@{ $self->plugins }) {
my $res = $p->handle_token($token);
if( defined $res ) {
push @processed, is_arrayref($res) ? @{$res} : $res;
next TOKEN;
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.836 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )