Freeside:3:Documentation:Developer/FS/Query

From Freeside
< Freeside:3:Documentation:Developer‎ | FS
Revision as of 09:34, 21 July 2015 by Jeremyd (talk | contribs) (Edit via perl MediaWiki framework (1.13))

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

NAME

FS::Query - A thin wrapper around qsearch argument hashes.

DESCRIPTION

This module exists because we pass qsearch argument lists around a lot, and add new joins or WHERE expressions in several stages, and I got tired of doing this:

 my $andwhere = "mycolumn IN('perl','python','javascript')";
 if ( ($search->{hashref} and keys( %{$search->{hashref}} ))
      or $search->{extra_sql} =~ /^\s*WHERE/ ) {
   $search->{extra_sql} .= " AND $andwhere";
 } else {
   $search->{extra_sql} = " WHERE $andwhere ";
 }

and then having it fail under some conditions if it's done wrong (as the above example is, obviously).

We may eventually switch over to SQL::Abstract or something for this, but for now it's a couple of crude manipulations and a wrapper to qsearch.

METHODS

new HASHREF
Turns HASHREF (a qsearch argument list) into an FS::Query object. None of the params are really required, but you should at least supply table.
In the Future this may do a lot more stuff.
clone
Returns another object that's a copy of this one.
and_where EXPR
Adds a constraint to the WHERE clause of the query. All other constraints in the WHERE clause should be joined with AND already; if not, they should be grouped with parentheses.
qsearch
Runs the query and returns all results.
qsearchs
Runs the query and returns only one result.