<?php
namespace {{ handlersNamespace }};

use Illuminate\Http\Request;
use Rupadana\ApiService\Http\Handlers;
use Spatie\QueryBuilder\QueryBuilder;
use {{ resource }};
use {{ transformerClass }};

class PaginationHandler extends Handlers {
    public static string | null $uri = '/';
    public static string | null $resource = {{ resourceClass }}::class;


    /**
     * List of {{ model }}
     *
     * @param Request $request
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public function handler()
    {
        $query = static::getEloquentQuery();

        $query = QueryBuilder::for($query)
        ->allowedFields($this->getAllowedFields() ?? [])
        ->allowedSorts($this->getAllowedSorts() ?? [])
        ->allowedFilters($this->getAllowedFilters() ?? [])
        ->allowedIncludes($this->getAllowedIncludes() ?? [])
        ->paginate(request()->query('per_page'))
        ->appends(request()->query());

        return {{ transformer }}::collection($query);
    }
}
