NAME

   Search::QS - A converter between query string URI and search query

VERSION

   version 0.04

SYNOPSIS

     use Search::QS;

     my $qs = new Search::QS;
     # parse query_string
     $qs->parse_qs($qs);
     # reconvert object to query_string
     print $qs->to_qs;

DESCRIPTION

   This module converts a query string like This

     http://www.example.com?flt[Name]=Foo

   into perl objects which rappresent a search.

   In "filters()" there are all flt (filter) elements.

   In "options()" there are query options like limit, start and sorting.

METHODS

filters()

   Return an instance of Search::QS::Filters

options()

   Return an instance of Search::QS::Options

parse($perl_struct)

   $perl_struct is an HASHREF which represents a query string like the one
   returned by "url_params_mixed" in URI::Encode. It parses the
   $perl_struct and fills related objects in "filters()" and "options()"

to_qs()

   Return a query string which represents current state of filters() and
   options() elements

Examples

   Here some Examples.

   ?flt[Name]=Foo

     should be converted into

       Name = 'Foo'

   ?flt[Name]=Foo%&flt[Name]=$op:like

     should be converted into

       Name like 'Foo%'

   ?flt[age]=5&flt[age]=9&flt[Name]=Foo

     should be converted into

       (age = 5 OR age = 9) AND (Name = Foo)

   ?flt[FirstName]=Foo&flt[FirstName]=$or:1&flt[LastName]=Bar&flt[LastName]=$or:1

     should be converted into

       ( (FirstName = Foo) OR (LastName = Bar) )

   ?flt[c:one]=1&flt[c:one]=$and:1&flt[d:one]=2&flt[d:one]=$and:1&flt[c:two]=2&flt[c:two]=$and:2&flt[d:two]=3&flt[d:two]=$op:!=&flt[d:two]=$and:2&flt[d:three]=10

     should be converted into

       (d = 10) AND  ( (c = 1) AND (d = 2) )  OR  ( (c = 2) AND (d != 3) )

SEE ALSO

   Search::QS::Filters, Search::QS::Filter, Search::QS::Options

AUTHOR

   Emiliano Bruni <[email protected]>

COPYRIGHT AND LICENSE

   This software is copyright (c) 2019 by Emiliano Bruni.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.