diff --git a/api/genera.go b/api/genera.go index e34196a..ded9823 100644 --- a/api/genera.go +++ b/api/genera.go @@ -22,17 +22,17 @@ func serveGenus(w http.ResponseWriter, r *http.Request) error { return err } - return writeJSON(w, genus) + return writeJSON(w, models.GenusJSON{Genus: genus}) } func serveCreateGenus(w http.ResponseWriter, r *http.Request) error { - var genus models.Genus + var genus models.GenusJSON err := json.NewDecoder(r.Body).Decode(&genus) if err != nil { return err } - created, err := store.Genera.Create(&genus) + created, err := store.Genera.Create(genus.Genus) if err != nil { return err } @@ -57,18 +57,18 @@ func serveGenera(w http.ResponseWriter, r *http.Request) error { genera = []*models.Genus{} } - return writeJSON(w, genera) + return writeJSON(w, models.GeneraJSON{Genera: genera}) } func serveUpdateGenus(w http.ResponseWriter, r *http.Request) error { id, _ := strconv.ParseInt(mux.Vars(r)["Id"], 10, 0) - var genus models.Genus + var genus models.GenusJSON err := json.NewDecoder(r.Body).Decode(&genus) if err != nil { return err } - updated, err := store.Genera.Update(id, &genus) + updated, err := store.Genera.Update(id, genus.Genus) if err != nil { return err } diff --git a/models/genera.go b/models/genera.go index f33150d..0b5bedb 100644 --- a/models/genera.go +++ b/models/genera.go @@ -19,6 +19,14 @@ type Genus struct { DeletedAt NullTime `db:"deleted_at" json:"deletedAt"` } +type GenusJSON struct { + Genus *Genus `json:"genus"` +} + +type GeneraJSON struct { + Genera []*Genus `json:"genera"` +} + func (m *Genus) String() string { return fmt.Sprintf("%v", *m) } @@ -68,13 +76,13 @@ func (s *generaService) Get(id int64) (*Genus, error) { return nil, err } - var genus *Genus + var genus *GenusJSON _, err = s.client.Do(req, &genus) if err != nil { return nil, err } - return genus, nil + return genus.Genus, nil } func (s *generaService) Create(genus *Genus) (bool, error) { @@ -83,7 +91,7 @@ func (s *generaService) Create(genus *Genus) (bool, error) { return false, err } - req, err := s.client.NewRequest("POST", url.String(), genus) + req, err := s.client.NewRequest("POST", url.String(), GenusJSON{Genus: genus}) if err != nil { return false, err } @@ -111,13 +119,13 @@ func (s *generaService) List(opt *GenusListOptions) ([]*Genus, error) { return nil, err } - var genera []*Genus + var genera *GeneraJSON _, err = s.client.Do(req, &genera) if err != nil { return nil, err } - return genera, nil + return genera.Genera, nil } func (s *generaService) Update(id int64, genus *Genus) (bool, error) { @@ -128,7 +136,7 @@ func (s *generaService) Update(id int64, genus *Genus) (bool, error) { return false, err } - req, err := s.client.NewRequest("PUT", url.String(), genus) + req, err := s.client.NewRequest("PUT", url.String(), GenusJSON{Genus: genus}) if err != nil { return false, err } diff --git a/models/genera_test.go b/models/genera_test.go index 806da27..aa472b8 100644 --- a/models/genera_test.go +++ b/models/genera_test.go @@ -25,7 +25,7 @@ func TestGeneraService_Get(t *testing.T) { called = true testMethod(t, r, "GET") - writeJSON(w, want) + writeJSON(w, GenusJSON{Genus: want}) }) genus, err := client.Genera.Get(want.Id) @@ -54,7 +54,7 @@ func TestGeneraService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateGenus, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"genusName":"Test Genus","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}`+"\n") + testBody(t, r, `{"genus":{"id":1,"genusName":"Test Genus","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -93,7 +93,7 @@ func TestGeneraService_List(t *testing.T) { testMethod(t, r, "GET") testFormValues(t, r, values{}) - writeJSON(w, want) + writeJSON(w, GeneraJSON{Genera: want}) }) genera, err := client.Genera.List(nil) @@ -124,7 +124,7 @@ func TestGeneraService_Update(t *testing.T) { mux.HandleFunc(urlPath(t, router.UpdateGenus, map[string]string{"Id": "1"}), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "PUT") - testBody(t, r, `{"id":1,"genusName":"Test Genus Updated","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}`+"\n") + testBody(t, r, `{"genus":{"id":1,"genusName":"Test Genus Updated","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}}`+"\n") w.WriteHeader(http.StatusOK) writeJSON(w, want) @@ -156,6 +156,7 @@ func TestGeneraService_Delete(t *testing.T) { mux.HandleFunc(urlPath(t, router.DeleteGenus, 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)