From db7cfa425147c7dc174050f8cca5870a2696e66b Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 23 Jan 2009 03:19:32 +0000 Subject: Bug 474715: Add 'limit', 'offset' and 'changed_since' arguments to WebService::Bug.search() Patch By Kip Hampton r=mkanat, a=mkanat --- Bugzilla/WebService/Bug.pm | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'Bugzilla/WebService') diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm index 04b18fe7c..31f87ba99 100755 --- a/Bugzilla/WebService/Bug.pm +++ b/Bugzilla/WebService/Bug.pm @@ -50,6 +50,8 @@ use constant FIELD_MAP => { summary => 'short_desc', url => 'bug_file_loc', whiteboard => 'status_whiteboard', + limit => 'LIMIT', + offset => 'OFFSET', }; use constant PRODUCT_SPECIFIC_FIELDS => qw(version target_milestone component); @@ -218,7 +220,21 @@ sub get_history { sub search { my ($self, $params) = @_; + + if ( $params->{offset} and !$params->{limit} ) { + ThrowCodeError( 'param_required', { param => 'limit', function => 'Bug.search()'}); + } + $params = _map_fields($params); + + # If the user set the 'last_change_time' param (translated into delta_ts + # by the field map), use a custom WHERE to constrain the query to only + # those bugs that have a delta_ts greater than or equal to + # the specified time. + if ( my $bug_when = delete $params->{delta_ts} ) { + $params->{WHERE} = {'delta_ts >= ?' => $bug_when}; + } + my $bugs = Bugzilla::Bug->match($params); my $visible = Bugzilla->user->visible_bugs($bugs); my @hashes = map { $self->_bug_to_hash($_) } @$visible; @@ -960,7 +976,21 @@ C The numeric id of the bug. =item C -C The last time the bug was updated. +C Limit the search to only those bugs which have changed +in some way since the specified time. It includes all bugs changed +between the specified time and the present. Note: only a single +C will accepted, not an array. + +=item C + +C Limit the number of results returned to C records. + +=item C + +C Used in conjunction with the C argument, C defines +the starting position for the search. For example, given a search that +would return 100 bugs, setting C to 10 and C to 10 would return +bugs 11 through 20 from the set of 100. =item C -- cgit v1.2.3-24-g4f1b