@@ -, +, @@ --- Koha/Object.pm | 34 ++++++++++++++++++++++++++++++++++ Koha/Objects.pm | 12 ++++++++++++ 2 files changed, 46 insertions(+) --- a/Koha/Object.pm +++ a/Koha/Object.pm @@ -356,6 +356,40 @@ sub _numeric_column_type { return ( grep { $column_type eq $_ } @numeric_types) ? 1 : 0; } +=head3 to_api + + my $object_for_api = $object->to_api; + +Returns a representation of the object, suitable for API output. + +=cut + +sub to_api { + my ( $self ) = @_; + my $json_object = $self->TO_JSON; + + # Rename attributes if there's a mapping + if ( $self->can('to_api_mapping') ) { + foreach my $column ( keys %{$self->to_api_mapping} ) { + my $mapped_column = $self->to_api_mapping->{$column}; + if ( exists $json_object->{$column} + && defined $mapped_column ) + { + # key != undef + $json_object->{$mapped_column} = delete $json_object->{$column}; + } + elsif ( exists $json_object->{$column} + && !defined $mapped_column ) + { + # key == undef + delete $json_object->{$column}; + } + } + } + + return $json_object; +} + =head3 $object->unblessed_all_relateds my $everything_into_one_hashref = $object->unblessed_all_relateds --- a/Koha/Objects.pm +++ a/Koha/Objects.pm @@ -308,6 +308,18 @@ sub TO_JSON { return [ map { $_->TO_JSON } $self->as_list ]; } +=head3 Koha::Objects->to_api + +Returns a representation of the objects, suitable for API output . + +=cut + +sub to_api { + my ($self) = @_; + + return [ map { $_->to_api } $self->as_list ]; +} + =head3 Koha::Objects->_wrap wraps the DBIC object in a corresponding Koha object --