diff --git a/src/Http/Controllers/Api/IncidentController.php b/src/Http/Controllers/Api/IncidentController.php index 07c90089..3cddcc3e 100644 --- a/src/Http/Controllers/Api/IncidentController.php +++ b/src/Http/Controllers/Api/IncidentController.php @@ -3,6 +3,7 @@ namespace CachetHQ\Cachet\Http\Controllers\Api; use CachetHQ\Cachet\Repositories\Incident\IncidentRepository; +use CachetHQ\Cachet\Transformers\IncidentTransformer; use Dingo\Api\Routing\ControllerTrait; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Routing\Controller; @@ -37,7 +38,9 @@ class IncidentController extends Controller */ public function getIncidents() { - return $this->incident->all(); + $incidents = $this->incident->paginate(Binput::get('per_page', 20)); + + return $this->response->paginator($incidents, new IncidentTransformer()); } /** diff --git a/src/Repositories/EloquentRepository.php b/src/Repositories/EloquentRepository.php index 772ccfce..d546a268 100644 --- a/src/Repositories/EloquentRepository.php +++ b/src/Repositories/EloquentRepository.php @@ -17,6 +17,18 @@ abstract class EloquentRepository return $this->model->all(); } + /** + * Returns paginated result. + * + * @param int $perPage + * + * @return \Illuminate\Pagination\Paginator + */ + public function paginate($perPage = 20) + { + return $this->model->paginate($perPage); + } + /** * Returns an object with related relationships. * diff --git a/src/Repositories/Incident/IncidentRepository.php b/src/Repositories/Incident/IncidentRepository.php index 2affb747..d0f9bca6 100644 --- a/src/Repositories/Incident/IncidentRepository.php +++ b/src/Repositories/Incident/IncidentRepository.php @@ -11,6 +11,15 @@ interface IncidentRepository */ public function all(); + /** + * Returns paginated result. + * + * @param int $perPage + * + * @return \Illuminate\Pagination\Paginator + */ + public function paginate($perPage = 20); + /** * Create a new model. *