From af10821ef59b37b3b96390a28ae24a5a8c41ee3b Mon Sep 17 00:00:00 2001 From: Elliot Hesp Date: Wed, 26 Nov 2014 15:00:36 +0000 Subject: [PATCH] Added Component Repository into controller --- .../Controllers/Api/ComponentController.php | 16 +---- .../Controllers/Api/IncidentController.php | 64 +++++++++++++++++++ .../Controllers/Api/MetricController.php} | 0 .../Component/ComponentRepository.php | 4 +- .../Component/EloquentComponentRepository.php | 21 +++++- .../Repositories/EloquentRepository.php | 28 ++++++-- app/controllers/api/ComponentController.php | 61 ------------------ app/routes/api.php | 2 +- 8 files changed, 114 insertions(+), 82 deletions(-) create mode 100644 app/CachetHq/Cachet/Controllers/Api/IncidentController.php rename app/{controllers/api/IncidentController.php => CachetHq/Cachet/Controllers/Api/MetricController.php} (100%) delete mode 100644 app/controllers/api/ComponentController.php diff --git a/app/CachetHq/Cachet/Controllers/Api/ComponentController.php b/app/CachetHq/Cachet/Controllers/Api/ComponentController.php index 3e9ef024..0e5be1b5 100644 --- a/app/CachetHq/Cachet/Controllers/Api/ComponentController.php +++ b/app/CachetHq/Cachet/Controllers/Api/ComponentController.php @@ -1,5 +1,6 @@ component->incidents($id); + return $this->component->with($id, ['incidents']); } /** @@ -45,17 +46,6 @@ class ComponentController extends DingoController { * @return Component */ public function postComponents() { - $component = new Component(Input::all()); - $component->user_id = $this->auth->user()->id; - if ($component->isValid()) { - try { - $component->saveOrFail(); - return $component; - } catch (Exception $e) { - App::abort(500, $e->getMessage()); - } - } else { - App::abort(404, $component->getErrors()->first()); - } + return $this->component->create($this->auth->user()->id, Input::all()); } } diff --git a/app/CachetHq/Cachet/Controllers/Api/IncidentController.php b/app/CachetHq/Cachet/Controllers/Api/IncidentController.php new file mode 100644 index 00000000..9dda89bd --- /dev/null +++ b/app/CachetHq/Cachet/Controllers/Api/IncidentController.php @@ -0,0 +1,64 @@ +auth = $auth; + } + + /** + * Get all incidents + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getIncidents() { + return Incident::all(); + } + + /** + * Get a single incident + * + * @param int $id + * + * @return Incident + */ + public function getIncident($id) { + if ($incident = Incident::find($id)) { + return $incident; + } else { + App::abort(404, 'Incident not found'); + } + } + + /** + * Create a new incident + * + * @return Incident + */ + public function postIncidents() { + $incident = new Incident(Input::all()); + $incident->user_id = $this->auth->user()->id; + return $this->_saveIncident($incident); + } + + /** + * Update an existing incident + * + * @param int $id + * + * @return Incident + */ + public function putIncident($id) { + $incident = $this->getIncident($id); + + $incident->fill(Input::all()); + + return $this->_saveIncident($incident); + } \ No newline at end of file diff --git a/app/controllers/api/IncidentController.php b/app/CachetHq/Cachet/Controllers/Api/MetricController.php similarity index 100% rename from app/controllers/api/IncidentController.php rename to app/CachetHq/Cachet/Controllers/Api/MetricController.php diff --git a/app/CachetHq/Cachet/Repositories/Component/ComponentRepository.php b/app/CachetHq/Cachet/Repositories/Component/ComponentRepository.php index ce8f15fe..cf02022d 100644 --- a/app/CachetHq/Cachet/Repositories/Component/ComponentRepository.php +++ b/app/CachetHq/Cachet/Repositories/Component/ComponentRepository.php @@ -4,7 +4,9 @@ interface ComponentRepository { public function all(); + public function create($id, array $array); + public function findOrFail($id); - public function incidents($id); + public function with($id, array $with); } diff --git a/app/CachetHq/Cachet/Repositories/Component/EloquentComponentRepository.php b/app/CachetHq/Cachet/Repositories/Component/EloquentComponentRepository.php index 36586cbc..565db2f8 100644 --- a/app/CachetHq/Cachet/Repositories/Component/EloquentComponentRepository.php +++ b/app/CachetHq/Cachet/Repositories/Component/EloquentComponentRepository.php @@ -1,9 +1,26 @@ model = $model; + } + + public function create($user_id, array $array) { + $component = new $this->model($array); + $component->user_id = $user_id; + + if ($component->isInvalid()) { + throw new Exception('Invalid model validation', $component->getErrors()); + } + + $component->saveOrFail(); + return $component; + } } diff --git a/app/CachetHq/Cachet/Repositories/EloquentRepository.php b/app/CachetHq/Cachet/Repositories/EloquentRepository.php index 8f844c09..9d018737 100644 --- a/app/CachetHq/Cachet/Repositories/EloquentRepository.php +++ b/app/CachetHq/Cachet/Repositories/EloquentRepository.php @@ -1,15 +1,26 @@ model->create($array); + public function all() { + return $this->model->all(); + } + + /** + * Returns an object with related relationships + * @param id $id + * @param array $with Array of model relationships + * @return object|ModelNotFoundException + */ + public function with($id, array $with = []) { + return $this->model->with($with)->findOrFail($id); } /** @@ -32,6 +43,15 @@ abstract class EloquentRepository { return $this->model->find($id); } + /** + * Finds a model by ID + * @param integer $id + * @return object|ModelNotFoundException + */ + public function findOrFail($id) { + return $this->model->findOrFail($id); + } + /** * Finds a model by type * @param string $key diff --git a/app/controllers/api/ComponentController.php b/app/controllers/api/ComponentController.php deleted file mode 100644 index 3ec64ae6..00000000 --- a/app/controllers/api/ComponentController.php +++ /dev/null @@ -1,61 +0,0 @@ -auth = $auth; - $this->component = $component; - } - - /** - * Get all components - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getComponents() { - return $this->component->all(); - } - - /** - * Get a single component - * - * @param int $id - * - * @return Component - */ - public function getComponent($id) { - return $this->component->findOrFail($id); - } - - public function getComponentIncidents($id) { - return $this->component->incidents($id); - } - - /** - * Create a new component - * - * @return Component - */ - public function postComponents() { - $component = new Component(Input::all()); - $component->user_id = $this->auth->user()->id; - if ($component->isValid()) { - try { - $component->saveOrFail(); - return $component; - } catch (Exception $e) { - App::abort(500, $e->getMessage()); - } - } else { - App::abort(404, $component->getErrors()->first()); - } - } -} diff --git a/app/routes/api.php b/app/routes/api.php index 81485d68..a704d3cd 100644 --- a/app/routes/api.php +++ b/app/routes/api.php @@ -1,6 +1,6 @@ 'v1', 'prefix' => 'api', 'namespace' => 'Cachet\Controllers\Api'], function() { + Route::api(['version' => 'v1', 'prefix' => 'api', 'namespace' => 'CachetHq\Cachet\Controllers\Api'], function() { Route::get('components', 'ComponentController@getComponents'); Route::get('components/{id}', 'ComponentController@getComponent');