Bugzilla – Attachment 51319 Details for
Bug 16271
Allow more filters on /api/v1/holds
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 16271: Allow more filters on /api/v1/holds
Bug-16271-Allow-more-filters-on-apiv1holds.patch (text/plain), 6.62 KB, created by
Julian Maurice
on 2016-05-09 07:52:06 UTC
(
hide
)
Description:
Bug 16271: Allow more filters on /api/v1/holds
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2016-05-09 07:52:06 UTC
Size:
6.62 KB
patch
obsolete
>From e745efc0104df450e92bd1acf9dc3c6c9c21e829 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Fri, 15 Apr 2016 10:49:29 +0200 >Subject: [PATCH] Bug 16271: Allow more filters on /api/v1/holds > >borrowernumber parameter is no longer required and you can filter on >every column of reserves table > >Some example requests >- GET /api/v1/hols >- GET /api/v1/hols?biblionumber=123 >- GET /api/v1/hols?borrowernumber=456 >- GET /api/v1/hols?priority=0&found=W > >Signed-off-by: Benjamin Rokseth <benjamin.rokseth@kul.oslo.kommune.no> >--- > Koha/REST/V1/Hold.pm | 14 +++--- > api/v1/swagger.json | 103 +++++++++++++++++++++++++++++++++++++++++- > t/db_dependent/api/v1/holds.t | 19 ++++++-- > 3 files changed, 125 insertions(+), 11 deletions(-) > >diff --git a/Koha/REST/V1/Hold.pm b/Koha/REST/V1/Hold.pm >index 208488d..7f0b1ff 100644 >--- a/Koha/REST/V1/Hold.pm >+++ b/Koha/REST/V1/Hold.pm >@@ -23,20 +23,20 @@ use C4::Biblio; > use C4::Reserves; > > use Koha::Patrons; >+use Koha::Holds; > use Koha::DateUtils; > > sub list { > my ($c, $args, $cb) = @_; > >- my $borrowernumber = $c->param('borrowernumber'); >- my $borrower = Koha::Patrons->find($borrowernumber); >- unless ($borrower) { >- return $c->$cb({error => "Borrower not found"}, 404); >+ my $params = $c->req->query_params->to_hash; >+ my @valid_params = Koha::Holds->_resultset->result_source->columns; >+ foreach my $key (keys %$params) { >+ delete $params->{$key} unless grep { $key eq $_ } @valid_params; > } >+ my $holds = Koha::Holds->search($params)->unblessed; > >- my @reserves = C4::Reserves::GetReservesFromBorrowernumber($borrowernumber); >- >- return $c->$cb(\@reserves, 200); >+ return $c->$cb($holds, 200); > } > > sub add { >diff --git a/api/v1/swagger.json b/api/v1/swagger.json >index 1488aba..b3f30f8 100644 >--- a/api/v1/swagger.json >+++ b/api/v1/swagger.json >@@ -80,11 +80,112 @@ > "tags": ["borrowers", "holds"], > "parameters": [ > { >+ "name": "reserve_id", >+ "in": "query", >+ "description": "Internal reserve identifier", >+ "type": "integer" >+ }, >+ { > "name": "borrowernumber", > "in": "query", > "description": "Internal borrower identifier", >- "required": true, > "type": "integer" >+ }, >+ { >+ "name": "reservedate", >+ "in": "query", >+ "description": "Reserve date", >+ "type": "string" >+ }, >+ { >+ "name": "biblionumber", >+ "in": "query", >+ "description": "Internal biblio identifier", >+ "type": "integer" >+ }, >+ { >+ "name": "branchcode", >+ "in": "query", >+ "description": "Branch code", >+ "type": "string" >+ }, >+ { >+ "name": "notificationdate", >+ "in": "query", >+ "description": "Notification date", >+ "type": "string" >+ }, >+ { >+ "name": "reminderdate", >+ "in": "query", >+ "description": "Reminder date", >+ "type": "string" >+ }, >+ { >+ "name": "cancellationdate", >+ "in": "query", >+ "description": "Cancellation date", >+ "type": "string" >+ }, >+ { >+ "name": "reservenotes", >+ "in": "query", >+ "description": "Reserve notes", >+ "type": "string" >+ }, >+ { >+ "name": "priority", >+ "in": "query", >+ "description": "Priority", >+ "type": "integer" >+ }, >+ { >+ "name": "found", >+ "in": "query", >+ "description": "Found status", >+ "type": "string" >+ }, >+ { >+ "name": "timestamp", >+ "in": "query", >+ "description": "Time of latest update", >+ "type": "string" >+ }, >+ { >+ "name": "itemnumber", >+ "in": "query", >+ "description": "Internal item identifier", >+ "type": "integer" >+ }, >+ { >+ "name": "waitingdate", >+ "in": "query", >+ "description": "Date the item was marked as waiting for the patron", >+ "type": "string" >+ }, >+ { >+ "name": "expirationdate", >+ "in": "query", >+ "description": "Date the hold expires", >+ "type": "string" >+ }, >+ { >+ "name": "lowestPriority", >+ "in": "query", >+ "description": "Lowest priority", >+ "type": "integer" >+ }, >+ { >+ "name": "suspend", >+ "in": "query", >+ "description": "Suspended", >+ "type": "integer" >+ }, >+ { >+ "name": "suspend_until", >+ "in": "query", >+ "description": "Suspended until", >+ "type": "string" > } > ], > "produces": ["application/json"], >diff --git a/t/db_dependent/api/v1/holds.t b/t/db_dependent/api/v1/holds.t >index 0ce67d5..52177bf 100644 >--- a/t/db_dependent/api/v1/holds.t >+++ b/t/db_dependent/api/v1/holds.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 30; >+use Test::More tests => 39; > use Test::Mojo; > > use DateTime; >@@ -56,6 +56,8 @@ my $borrowernumber2 = $borrower2->borrowernumber; > my $biblionumber = create_biblio('RESTful Web APIs'); > my $itemnumber = create_item($biblionumber, 'TEST000001'); > >+$dbh->do('DELETE FROM reserves'); >+ > my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, > $biblionumber, undef, 1, undef, undef, undef, '', $itemnumber); > >@@ -63,6 +65,17 @@ my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, > C4::Reserves::AddReserve($branchcode, $borrowernumber2, > $biblionumber, undef, 2, undef, undef, undef, '', $itemnumber); > >+$t->get_ok('/api/v1/holds') >+ ->status_is(200) >+ ->json_has('/0') >+ ->json_has('/1') >+ ->json_hasnt('/2'); >+ >+$t->get_ok('/api/v1/holds?priority=2') >+ ->status_is(200) >+ ->json_is('/0/borrowernumber', $borrowernumber2) >+ ->json_hasnt('/1'); >+ > my $suspend_until = DateTime->now->add(days => 10)->ymd; > my $put_data = { > priority => 2, >@@ -92,8 +105,8 @@ $t->get_ok("/api/v1/holds?borrowernumber=$borrowernumber") > > my $inexisting_borrowernumber = $borrowernumber2 + 1; > $t->get_ok("/api/v1/holds?borrowernumber=$inexisting_borrowernumber") >- ->status_is(404) >- ->json_has('/error'); >+ ->status_is(200) >+ ->json_is([]); > > $dbh->do('DELETE FROM issuingrules'); > $dbh->do(q{ >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 16271
:
50263
|
50272
|
51319
|
51320
|
52862