$reserved_params->{_per_page} //= C4::Context->preference('RESTdefaultPageSize');
$reserved_params->{_page} //= 1;
- # Merge pagination into query attributes
- $c->dbic_merge_pagination(
- {
- filter => $attributes,
- params => $reserved_params
- }
- );
+ unless ( $reserved_params->{_per_page} == -1 ) {
+ # Merge pagination into query attributes
+ $c->dbic_merge_pagination(
+ {
+ filter => $attributes,
+ params => $reserved_params
+ }
+ );
+ }
# Generate prefetches for embedded stuff
$c->dbic_merge_prefetch(
params => $args,
});
}
+ else {
+ $c->add_pagination_headers({
+ total => $objects->count,
+ params => $args,
+ });
+ }
return $objects->to_api({ embed => $embed });
}
my ( $c, $args ) = @_;
my $total = $args->{total};
- my $req_page = $args->{params}->{_page};
+ my $req_page = $args->{params}->{_page} // 1;
my $per_page = $args->{params}->{_per_page} //
C4::Context->preference('RESTdefaultPageSize') // 20;
- # do we need to paginate?
- return $c unless $req_page;
-
- my $pages = int $total / $per_page;
- $pages++
- if $total % $per_page > 0;
+ my $pages;
+ if ( $per_page == -1 ) {
+ $req_page = 1;
+ $pages = 1;
+ }
+ else {
+ $pages = int $total / $per_page;
+ $pages++
+ if $total % $per_page > 0;
+ }
my @links;
- if ( $pages > 1 and $req_page > 1 ) { # Previous exists?
+ if ( $per_page != -1 and $pages > 1 and $req_page > 1 ) { # Previous exists?
push @links,
_build_link(
$c,
);
}
- if ( $pages > 1 and $req_page < $pages ) { # Next exists?
+ if ( $per_page != -1 and $pages > 1 and $req_page < $pages ) { # Next exists?
push @links,
_build_link(
$c,