diff --git a/api/measurements.go b/api/measurements.go index 0580cab..622855f 100644 --- a/api/measurements.go +++ b/api/measurements.go @@ -20,17 +20,17 @@ func serveMeasurement(w http.ResponseWriter, r *http.Request) error { return err } - return writeJSON(w, measurement) + return writeJSON(w, models.MeasurementJSON{Measurement: measurement}) } func serveCreateMeasurement(w http.ResponseWriter, r *http.Request) error { - var measurement models.Measurement + var measurement models.MeasurementJSON err := json.NewDecoder(r.Body).Decode(&measurement) if err != nil { return err } - created, err := store.Measurements.Create(&measurement) + created, err := store.Measurements.Create(measurement.Measurement) if err != nil { return err } @@ -55,18 +55,18 @@ func serveMeasurementList(w http.ResponseWriter, r *http.Request) error { measurements = []*models.Measurement{} } - return writeJSON(w, measurements) + return writeJSON(w, models.MeasurementsJSON{Measurements: measurements}) } func serveUpdateMeasurement(w http.ResponseWriter, r *http.Request) error { id, _ := strconv.ParseInt(mux.Vars(r)["Id"], 10, 0) - var measurement models.Measurement + var measurement models.MeasurementJSON err := json.NewDecoder(r.Body).Decode(&measurement) if err != nil { return err } - updated, err := store.Measurements.Update(id, &measurement) + updated, err := store.Measurements.Update(id, measurement.Measurement) if err != nil { return err } @@ -88,7 +88,7 @@ func serveDeleteMeasurement(w http.ResponseWriter, r *http.Request) error { w.WriteHeader(http.StatusOK) } - return writeJSON(w, &models.Measurement{}) + return writeJSON(w, nil) } func serveSubrouterMeasurementsList(w http.ResponseWriter, r *http.Request) error { @@ -107,5 +107,5 @@ func serveSubrouterMeasurementsList(w http.ResponseWriter, r *http.Request) erro measurements = []*models.Measurement{} } - return writeJSON(w, measurements) + return writeJSON(w, models.MeasurementsJSON{Measurements: measurements}) } diff --git a/models/measurements.go b/models/measurements.go index b3432fe..4c88c57 100644 --- a/models/measurements.go +++ b/models/measurements.go @@ -30,6 +30,14 @@ type Measurement struct { UpdatedAt time.Time `db:"updated_at" json:"updatedAt"` } +type MeasurementJSON struct { + Measurement *Measurement `json:"measurement"` +} + +type MeasurementsJSON struct { + Measurements []*Measurement `json:"measurements"` +} + func (m *Measurement) String() string { return fmt.Sprintf("%v", *m) } @@ -78,13 +86,13 @@ func (s *measurementsService) Get(id int64) (*Measurement, error) { return nil, err } - var measurement *Measurement + var measurement *MeasurementJSON _, err = s.client.Do(req, &measurement) if err != nil { return nil, err } - return measurement, nil + return measurement.Measurement, nil } func (s *measurementsService) Create(measurement *Measurement) (bool, error) { @@ -93,7 +101,7 @@ func (s *measurementsService) Create(measurement *Measurement) (bool, error) { return false, err } - req, err := s.client.NewRequest("POST", url.String(), measurement) + req, err := s.client.NewRequest("POST", url.String(), MeasurementJSON{Measurement: measurement}) if err != nil { return false, err } @@ -122,13 +130,13 @@ func (s *measurementsService) List(opt *MeasurementListOptions) ([]*Measurement, return nil, err } - var measurements []*Measurement + var measurements *MeasurementsJSON _, err = s.client.Do(req, &measurements) if err != nil { return nil, err } - return measurements, nil + return measurements.Measurements, nil } func (s *measurementsService) Update(id int64, measurement *Measurement) (bool, error) { @@ -139,7 +147,7 @@ func (s *measurementsService) Update(id int64, measurement *Measurement) (bool, return false, err } - req, err := s.client.NewRequest("PUT", url.String(), measurement) + req, err := s.client.NewRequest("PUT", url.String(), MeasurementJSON{Measurement: measurement}) if err != nil { return false, err } diff --git a/models/measurements_test.go b/models/measurements_test.go index 873fad0..857295a 100644 --- a/models/measurements_test.go +++ b/models/measurements_test.go @@ -30,7 +30,7 @@ func TestMeasurementService_Get(t *testing.T) { called = true testMethod(t, r, "GET") - writeJSON(w, want) + writeJSON(w, MeasurementJSON{Measurement: want}) }) measurement, err := client.Measurements.Get(want.Id) @@ -59,7 +59,7 @@ func TestMeasurementService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateMeasurement, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":1.23,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"measurement":{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":1.23,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -97,7 +97,7 @@ func TestMeasurementService_List(t *testing.T) { testMethod(t, r, "GET") testFormValues(t, r, values{}) - writeJSON(w, want) + writeJSON(w, MeasurementsJSON{Measurements: want}) }) measurements, err := client.Measurements.List(nil) @@ -128,7 +128,7 @@ func TestMeasurementService_Update(t *testing.T) { mux.HandleFunc(urlPath(t, router.UpdateMeasurement, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "PUT") - testBody(t, r, `{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":4.56,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}`+"\n") + testBody(t, r, `{"measurement":{"id":1,"strainId":1,"characteristicId":1,"textMeasurementTypeId":null,"txtValue":null,"numValue":4.56,"confidenceInterval":null,"unitTypeId":1,"notes":"a note","testMethodId":null,"createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z"}}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) }) @@ -159,6 +159,7 @@ func TestMeasurementService_Delete(t *testing.T) { mux.HandleFunc(urlPath(t, router.DeleteMeasurement, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "DELETE") + testBody(t, r, "") w.WriteHeader(http.StatusOK) writeJSON(w, want)