Include species in chars payload

This commit is contained in:
Matthew Dillon 2015-07-13 14:11:01 -08:00
parent 5cb7ad73e1
commit 8b49abba83

View file

@ -65,6 +65,7 @@ type CharacteristicPayload struct {
Characteristic *Characteristic `json:"characteristic"` Characteristic *Characteristic `json:"characteristic"`
Measurements *Measurements `json:"measurements"` Measurements *Measurements `json:"measurements"`
Strains *Strains `json:"strains"` Strains *Strains `json:"strains"`
Species *ManySpecies `json:"species"`
Meta *CharacteristicMeta `json:"meta"` Meta *CharacteristicMeta `json:"meta"`
} }
@ -72,6 +73,7 @@ type CharacteristicsPayload struct {
Characteristics *Characteristics `json:"characteristics"` Characteristics *Characteristics `json:"characteristics"`
Measurements *Measurements `json:"measurements"` Measurements *Measurements `json:"measurements"`
Strains *Strains `json:"strains"` Strains *Strains `json:"strains"`
Species *ManySpecies `json:"species"`
Meta *CharacteristicMeta `json:"meta"` 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) 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 // TODO: tack on measurements
payload := CharacteristicsPayload{ payload := CharacteristicsPayload{
Characteristics: characteristics, Characteristics: characteristics,
Measurements: nil, Measurements: nil,
Strains: strains, Strains: strains,
Species: species,
Meta: &CharacteristicMeta{ Meta: &CharacteristicMeta{
CanAdd: canAdd(claims), CanAdd: canAdd(claims),
}, },
@ -126,7 +139,17 @@ func (c CharacteristicService) get(id int64, genus string, claims *Claims) (enti
return nil, newJSONError(err, http.StatusInternalServerError) 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 { if err != nil {
return nil, newJSONError(err, http.StatusInternalServerError) return nil, newJSONError(err, http.StatusInternalServerError)
} }
@ -136,6 +159,7 @@ func (c CharacteristicService) get(id int64, genus string, claims *Claims) (enti
Characteristic: characteristic, Characteristic: characteristic,
Measurements: nil, Measurements: nil,
Strains: strains, Strains: strains,
Species: species,
Meta: &CharacteristicMeta{ Meta: &CharacteristicMeta{
CanAdd: canAdd(claims), CanAdd: canAdd(claims),
}, },
@ -197,7 +221,7 @@ func strainOptsFromCharacteristics(opt ListOptions) (*ListOptions, error) {
return &ListOptions{Genus: opt.Genus, Ids: relatedStrainIds}, nil 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{ opt := ListOptions{
Genus: genus, Genus: genus,
Ids: []int64{id}, Ids: []int64{id},
@ -205,15 +229,15 @@ func strainsFromCharacteristicId(id int64, genus string, claims *Claims) (*Strai
strains_opt, err := strainOptsFromCharacteristics(opt) strains_opt, err := strainOptsFromCharacteristics(opt)
if err != nil { if err != nil {
return nil, err return nil, nil, err
} }
strains, err := listStrains(*strains_opt, claims) strains, err := listStrains(*strains_opt, claims)
if err != nil { 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) { func getCharacteristic(id int64, claims *Claims) (*Characteristic, error) {