diff --git a/handlers.go b/handlers.go index 10d1a23..8f0033a 100644 --- a/handlers.go +++ b/handlers.go @@ -120,6 +120,7 @@ func Handler() http.Handler { r{handleGetter(characteristicService), "GET", "/characteristics/{Id:.+}"}, r{handleUpdater(characteristicService), "PUT", "/characteristics/{Id:.+}"}, r{handleLister(measurementService), "GET", "/measurements"}, + r{handleCreater(measurementService), "POST", "/measurements"}, r{handleGetter(measurementService), "GET", "/measurements/{Id:.+}"}, r{handleUpdater(measurementService), "PUT", "/measurements/{Id:.+}"}, r{handleDeleter(measurementService), "DELETE", "/measurements/{Id:.+}"}, diff --git a/measurements.go b/measurements.go index 543095b..5783fb4 100644 --- a/measurements.go +++ b/measurements.go @@ -255,6 +255,19 @@ func (m MeasurementService) delete(id int64, genus string, claims *Claims) *appE return nil } +func (m MeasurementService) create(e *entity, genus string, claims *Claims) *appError { + payload := (*e).(*MeasurementPayload) + payload.Measurement.CreatedBy = claims.Sub + payload.Measurement.UpdatedBy = claims.Sub + + if err := DBH.Insert(payload.Measurement.MeasurementBase); err != nil { + return newJSONError(err, http.StatusInternalServerError) + } + + return nil + +} + func listMeasurements(opt MeasurementListOptions, claims *Claims) (*Measurements, error) { var vals []interface{} diff --git a/strains.go b/strains.go index 3e8ab3a..7851e7d 100644 --- a/strains.go +++ b/strains.go @@ -343,7 +343,7 @@ func getStrain(id int64, genus string, claims *Claims) (*Strain, error) { FROM strains st INNER JOIN species sp ON sp.id=st.species_id INNER JOIN genera g ON g.id=sp.genus_id AND LOWER(g.genus_name)=LOWER($1) - INNER JOIN measurements m ON m.strain_id=st.id + LEFT OUTER JOIN measurements m ON m.strain_id=st.id WHERE st.id=$2 GROUP BY st.id;` if err := DBH.SelectOne(&strain, q, genus, id); err != nil {