Bug 24366: Merge biblioitem in Koha::Biblio->to_api
This patch moves the bilbioitem object merge into the
Koha::Biblio->to_api method, as opposed to doing it in the controller.
This is an inevitable change as other endpoints might require to embed
biblio objects, and they need to carry the biblioitem information.
Also, if we merge the tables, the transition will be straightforward
(remove the tests this patch introduces, and merge the mappings from
Koha::Biblioitem into Koha::Biblio).
To test:
1. Apply this patches
2. Run:
$ kshell
k$ prove t/db_dependent/Koha/Biblio.t \
t/db_dependent/api/v1/biblios.t
=> SUCCESS: Tests pass! i.e. the new to_api method is tested, and the
API tests don't expect any behavior change.
3. Sign off :-D
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
0d634ca430
commit
52d3b5439d
|
|
@ -724,6 +724,29 @@ sub custom_cover_image_url {
|
|||
return $url;
|
||||
}
|
||||
|
||||
=head3 to_api
|
||||
|
||||
my $json = $biblio->to_api;
|
||||
|
||||
Overloaded method that returns a JSON representation of the Koha::Biblio object,
|
||||
suitable for API output. The related Koha::Biblioitem object is merged as expected
|
||||
on the API.
|
||||
|
||||
=cut
|
||||
|
||||
sub to_api {
|
||||
my ($self, $args) = @_;
|
||||
|
||||
my $response = $self->SUPER::to_api( $args );
|
||||
my $biblioitem = $self->biblioitem->to_api( $args );
|
||||
|
||||
foreach my $key ( keys %{ $biblioitem } ) {
|
||||
$response->{$key} = $biblioitem->{$key};
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
=head3 to_api_mapping
|
||||
|
||||
This method returns the mapping for representing a Koha::Biblio object
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ on the API.
|
|||
sub to_api_mapping {
|
||||
return {
|
||||
agerestriction => 'age_restriction',
|
||||
biblionumber => 'biblio_id',
|
||||
biblioitemnumber => undef, # meaningless
|
||||
collectionissn => 'collection_issn',
|
||||
collectiontitle => 'collection_title',
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ sub get {
|
|||
if ( $c->req->headers->accept =~ m/application\/json/ ) {
|
||||
return $c->render(
|
||||
status => 200,
|
||||
json => $c->build_json_biblio( { biblio => $biblio } )
|
||||
json => $biblio->to_api
|
||||
);
|
||||
}
|
||||
else {
|
||||
|
|
@ -148,27 +148,4 @@ sub delete {
|
|||
};
|
||||
}
|
||||
|
||||
=head2 Internal methods
|
||||
|
||||
=head3 build_json_biblio
|
||||
|
||||
Internal method that returns all the attributes from the biblio and biblioitems tables
|
||||
|
||||
=cut
|
||||
|
||||
sub build_json_biblio {
|
||||
my ( $c, $args ) = @_;
|
||||
|
||||
my $biblio = $args->{biblio};
|
||||
|
||||
my $response = $biblio->to_api;
|
||||
my $biblioitem = $biblio->biblioitem->to_api;
|
||||
|
||||
foreach my $key ( keys %{ $biblioitem } ) {
|
||||
$response->{$key} = $biblioitem->{$key};
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue