NAME

Rubric::Entry::Query - construct and execute a complex query

VERSION

version 0.04

$Id: Query.pm,v 1.5 2005/01/23 20:00:24 rjbs Exp $

DESCRIPTION

Rubric::Entry::Query builds a query based on a simple hash of parameters, performs that query, and returns the rendered report on the results.

METHODS

query(\%arg)

This is the only interface to this module. Given a hashref of named arguments, it returns the entries that match constraints built from the arguments. It generates these constraints with get_constraint and its helpers. If any constraint is invalid, an empty set of results is returned.

get_constraint($param => $value)

Given a name/value pair describing a constraint, this method will attempt to generate part of an SQL WHERE clause enforcing the constraint. To do this, it looks for and calls a method called "constraint_for_NAME" where NAME is the passed value of $param. If no clause can be generated, it returns undef.

get_entries(\@constraints)

Given a set of SQL constraints, this method builds the WHERE and ORDER BY clauses and performs a query with Class::DBI's retrieve_from_sql.

constraint_for_NAME

These methods are called to produce SQL for the named parameter, and are passed a scalar argument. If the argument is not valid, they return undef, which will cause query to produce an empty set of records.

constraint_for_user($user)

Given a Rubric::User object, this returns SQL to limit results to entries by the user.

constraint_for_tags(\@tags)

Given an arrayref of tag names, this returns SQL to limit results to entries marked with the given tags.

constraint_for_has_body($bool)

This returns SQL to limit the results to entries with bodies.

constraint_for_has_link($bool)

This returns SQL to limit the results to entries with links.

constraint_for_urimd5($md5)

This returns SQL to limit the results to entries whose link has the given md5sum.

constraint_for_{timefield}_{preposition}($datetime)

This set of six methods return SQL to limit the results based on its timestamps.

The passed value is a complete or partial datetime in the form:

YYYY[-MM[-DD[ HH[:MM]]]]  # space may be replaced with 'T'

The timefield may be "created" or "modified".

The prepositions are as follows:

after  - after the latest part of the given unit of time
before - before the earliest part of the given unit of time
on     - after (or at) the earliest part and before (or at) the latest part

AUTHOR

Ricardo SIGNES, <rjbs@cpan.org>

BUGS

Please report any bugs or feature requests to bug-rubric@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

COPYRIGHT

Copyright 2004 Ricardo SIGNES. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.