Class::DBI::Search::Basic - Simple Class::DBI search


Class-DBI documentation  | view source Contained in the Class-DBI distribution.

Index


NAME

Top

Class::DBI::Search::Basic - Simple Class::DBI search

SYNOPSIS

Top

	my $searcher = Class::DBI::Search::Basic->new(
		$cdbi_class, @search_args
	);

	my @results = $searcher->run_search;

	# Over in your Class::DBI subclass:

	__PACKAGE__->add_searcher(
		search  => "Class::DBI::Search::Basic",
	  isearch => "Class::DBI::Search::Plugin::CaseInsensitive",
	);

DESCRIPTION

Top

This is the start of a pluggable Search infrastructure for Class::DBI.

At the minute Class::DBI::Search::Basic doubles up as both the default search within Class::DBI as well as the search base class. We will probably need to tease this apart more later and create an abstract base class for search plugins.

METHODS

Top

new

	my $searcher = Class::DBI::Search::Basic->new(
		$cdbi_class, @search_args
	);

A Searcher is created with the class to which the results will belong, and the arguments passed to the search call by the user.

opt

	if (my $order = $self->opt('order_by')) { ... }

The arguments passed to search may contain an options hash. This will return the value of a given option.

	my @results = $searcher->run_search;
	my $iterator = $searcher->run_search;

Actually run the search.

SUBCLASSING

Top

sql / bind / fragment

The actual mechanics of generating the SQL and executing it split up into a variety of methods for you to override.

run_search() is implemented as:

  return $cdbi->sth_to_objects($self->sql, $self->bind);

Where sql() is

  $cdbi->sql_Retrieve($self->fragment);




There are also a variety of private methods underneath this that could be overriden in a pinch, but if you need to do this I'd rather you let me know so that I can make them public, or at least so that I don't remove them from under your feet.


Class-DBI documentation  | view source Contained in the Class-DBI distribution.