From 613911ee841f28df89a4bdb3a3bb8eb11ecf7535 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 13 Dec 2014 14:02:56 +0000 Subject: [PATCH] MeticPoint API --- .../Controllers/Api/MetricPointController.php | 47 +++++++++++++++++++ .../EloquentMetricPointRepository.php | 34 ++++++++++++++ .../MetricPoint/MetricPointRepository.php | 14 ++++++ .../Transformers/MetricPointTransformer.php | 20 ++++++++ app/routes/api.php | 2 + 5 files changed, 117 insertions(+) create mode 100644 app/CachetHq/Cachet/Controllers/Api/MetricPointController.php create mode 100644 app/CachetHq/Cachet/Repositories/MetricPoint/EloquentMetricPointRepository.php create mode 100644 app/CachetHq/Cachet/Repositories/MetricPoint/MetricPointRepository.php create mode 100644 app/CachetHq/Cachet/Transformers/MetricPointTransformer.php diff --git a/app/CachetHq/Cachet/Controllers/Api/MetricPointController.php b/app/CachetHq/Cachet/Controllers/Api/MetricPointController.php new file mode 100644 index 00000000..a761d2f3 --- /dev/null +++ b/app/CachetHq/Cachet/Controllers/Api/MetricPointController.php @@ -0,0 +1,47 @@ +metricpoint = $metricpoint; + } + /** + * Get all metric points + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getMetricPoints() { + return $this->metricpoint->all(); + } + + /** + * Get a single metric point + * + * @param int $id + * + * @return MetricPoint + */ + public function getMetricPoint($id) { + return $this->metricpoint->findOrFail($id); + } + + /** + * Create a new metric point + * + * @return MetricPoint + */ + public function postMetricPoints() { + return $this->metricpoint->create(Input::all()); + } +} diff --git a/app/CachetHq/Cachet/Repositories/MetricPoint/EloquentMetricPointRepository.php b/app/CachetHq/Cachet/Repositories/MetricPoint/EloquentMetricPointRepository.php new file mode 100644 index 00000000..09e261df --- /dev/null +++ b/app/CachetHq/Cachet/Repositories/MetricPoint/EloquentMetricPointRepository.php @@ -0,0 +1,34 @@ +model = $model; + } + + public function create(array $array) { + $metric = new $this->model($array); + + $this->validate($metric); + + $metric->saveOrFail(); + return $metric; + } + + public function update($id, array $array) { + $metric = $this->model->findOrFail($id); + $metric->fill($array); + + $this->validate($metric); + + $metric->update($array); + return $metric; + } +} diff --git a/app/CachetHq/Cachet/Repositories/MetricPoint/MetricPointRepository.php b/app/CachetHq/Cachet/Repositories/MetricPoint/MetricPointRepository.php new file mode 100644 index 00000000..0c30663b --- /dev/null +++ b/app/CachetHq/Cachet/Repositories/MetricPoint/MetricPointRepository.php @@ -0,0 +1,14 @@ + (int) $metricPoint->id, + 'metric_id' => $metricPoint->metric_id, + 'value' => $metricPoint->value, + 'created_at' => $metricPoint->created_at->timestamp, + 'updated_at' => $metricPoint->updated_at->timestamp, + ]; + } + +} diff --git a/app/routes/api.php b/app/routes/api.php index eeea5c87..f78b98bf 100644 --- a/app/routes/api.php +++ b/app/routes/api.php @@ -9,11 +9,13 @@ Route::api(['version' => 'v1', 'namespace' => 'CachetHQ\Cachet\Controllers\Api'] Route::get('incidents/{id}', 'IncidentController@getIncident'); Route::get('metrics', 'MetricController@getMetrics'); Route::get('metrics/{id}', 'MetricController@getMetric'); + Route::get('metrics/points/{id}', 'MetricPointController@getMetricPoint'); Route::group(['protected' => true], function() { Route::post('components', 'ComponentController@postComponents'); Route::post('incidents', 'IncidentController@postIncidents'); Route::post('metrics', 'MetricController@postMetrics'); + Route::post('metrics/points', 'MetricPointController@postMetricPoints'); Route::put('components/{id}', 'ComponentController@putComponent'); Route::put('incidents/{id}', 'IncidentController@putIncident');