Why not adopt me?
NAME
Rubric::Entry::Query - construct and execute a complex query
VERSION
version 0.04
$Id: Query.pm,v 1.6 2005/03/31 01:02:53 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.