Ben Sommer > Myco-1.22 > Myco::Query::Part::Filter

Download:
Myco-1.22.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Source  

NAME ^

Myco::Query::Part::Filter - a Myco entity class

SYNOPSIS ^

  use Myco;

  # Constructors. See Myco::Entity for more.
  my $filter = Myco::Query::Part::Filter->new;

  $filter->set_relevance( 1 ); # this filter is relevant to the query,
                               # required, even

  $filter->set_parts(
                      [
                        # starting with just one part...

                        { remote => '$sample_base_entity_',
                          attr => 'chicken',
                          oper => '==',
                          param => '$params{chk}' }
                      ]
                    );

  # Note that 'set_parts' accepts a precompiled (see below) filter or clause
  # object or just an attribute hash that is constructor-friendly.

  # See Myco::Entity::SampleEntity for more on this 'poultry' example

  # We must be able to nest filters inside of other filters, ad infinitum.
  my $parent_filter = Myco::Query::Part::Filter->new
                        ( relevance => 0,
                          parts => [ $filter ], # here we're passing in a
                                                # pre-compiled filter object
                        );

  # See below for examples of instance methods

DESCRIPTION ^

This class of object encapsulates Tangram::Filter objects. It stores metadata about the filter object, facilitates the addition and removal of metadata, and gathers the metadata together when the time comes for Myco::QueryTemplate to render these objects into usable Tangram query filters when a query is run. A key feature of this class is to recursively include other Myco::Query::Part::Filter objects into each other, via the parts attribute.

COMMON ENTITY INTERFACE ^

Constructor, accessors, and other methods -- as inherited from Myco::Entity.

ATTRIBUTES ^

Attributes may be initially set during object construction (with new()) but otherwise are accessed solely through accessor methods. Typical usage:

A listing of available attributes follows:

parts

 type: transient

An array reference of the parts of the query filter. These parts consist of clauses and (potentially) other filter objects.

relevance

 type: transient - boolean (1 | 0)

A boolean attribute that determines if a Filter is 'relevant', i.e. whether its inclusion in a query should be by default even if none of the params relevant to it were passed at query-run-time. On its own, this attribute is useless. To dynamically determine if a filter is relevant just prior to query-run-time, use $filter->is_relevant( %query_run_params ).

ADDED CLASS / INSTANCE METHODS ^

add_part

  $query_filter->add_part( $query_part );

Pushes a Myco::Query::Part object onto the end of the parts array.

remove_part

  $query_filter->remove_part( $query_part );

Deletes a Myco::Query::Part object from the parts array. Accpets and object reference or an object ID.

get_combined_parts

  my $filter_string = $query_filter->get_combined_parts;

Returns all the filter parts into a string.

is_relevant

  my $is_relevant = $query_filter->is_relevant( \%query_run_time_params );

Calculates whether this filter is relevant to its containing query - i.e. its clauses having to do with 'remote' object comparison will be ignored if their attendant paramters were not passed to run_query.

LICENSE AND COPYRIGHT ^

Copyright (c) 2006 the myco project. All rights reserved. This software is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO ^

Myco::Query::Part::Filter::Test, Myco::Entity, Myco, Tangram, Class::Tangram, myco-mkentity

syntax highlighting: