From 8b49abba83f837aface538edff10930668bb0868 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 13 Jul 2015 14:11:01 -0800 Subject: [PATCH] Include species in chars payload --- characteristics.go | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/characteristics.go b/characteristics.go index 769a52e..5704aa3 100644 --- a/characteristics.go +++ b/characteristics.go @@ -65,6 +65,7 @@ type CharacteristicPayload struct { Characteristic *Characteristic `json:"characteristic"` Measurements *Measurements `json:"measurements"` Strains *Strains `json:"strains"` + Species *ManySpecies `json:"species"` Meta *CharacteristicMeta `json:"meta"` } @@ -72,6 +73,7 @@ type CharacteristicsPayload struct { Characteristics *Characteristics `json:"characteristics"` Measurements *Measurements `json:"measurements"` Strains *Strains `json:"strains"` + Species *ManySpecies `json:"species"` Meta *CharacteristicMeta `json:"meta"` } @@ -107,11 +109,22 @@ func (c CharacteristicService) list(val *url.Values, claims *Claims) (entity, *a return nil, newJSONError(err, http.StatusInternalServerError) } + species_opt, err := speciesOptsFromStrains(*strains_opt) + if err != nil { + return nil, newJSONError(err, http.StatusInternalServerError) + } + + species, err := listSpecies(*species_opt, claims) + if err != nil { + return nil, newJSONError(err, http.StatusInternalServerError) + } + // TODO: tack on measurements payload := CharacteristicsPayload{ Characteristics: characteristics, Measurements: nil, Strains: strains, + Species: species, Meta: &CharacteristicMeta{ CanAdd: canAdd(claims), }, @@ -126,7 +139,17 @@ func (c CharacteristicService) get(id int64, genus string, claims *Claims) (enti return nil, newJSONError(err, http.StatusInternalServerError) } - strains, err := strainsFromCharacteristicId(id, genus, claims) + strains, strain_opts, err := strainsFromCharacteristicId(id, genus, claims) + if err != nil { + return nil, newJSONError(err, http.StatusInternalServerError) + } + + species_opt, err := speciesOptsFromStrains(*strain_opts) + if err != nil { + return nil, newJSONError(err, http.StatusInternalServerError) + } + + species, err := listSpecies(*species_opt, claims) if err != nil { return nil, newJSONError(err, http.StatusInternalServerError) } @@ -136,6 +159,7 @@ func (c CharacteristicService) get(id int64, genus string, claims *Claims) (enti Characteristic: characteristic, Measurements: nil, Strains: strains, + Species: species, Meta: &CharacteristicMeta{ CanAdd: canAdd(claims), }, @@ -197,7 +221,7 @@ func strainOptsFromCharacteristics(opt ListOptions) (*ListOptions, error) { return &ListOptions{Genus: opt.Genus, Ids: relatedStrainIds}, nil } -func strainsFromCharacteristicId(id int64, genus string, claims *Claims) (*Strains, error) { +func strainsFromCharacteristicId(id int64, genus string, claims *Claims) (*Strains, *ListOptions, error) { opt := ListOptions{ Genus: genus, Ids: []int64{id}, @@ -205,15 +229,15 @@ func strainsFromCharacteristicId(id int64, genus string, claims *Claims) (*Strai strains_opt, err := strainOptsFromCharacteristics(opt) if err != nil { - return nil, err + return nil, nil, err } strains, err := listStrains(*strains_opt, claims) if err != nil { - return nil, err + return nil, nil, err } - return strains, nil + return strains, strains_opt, nil } func getCharacteristic(id int64, claims *Claims) (*Characteristic, error) {