Skip to content

Commit f1972dc

Browse files
committed
refactor(core.DatasetRequests.Save): removed ambiguous Save method
having Init, Update, and Save methods on core.DatasetRequests is wrong. removed Save method. BREAKING CHANGE: all api methods now route through either Init or Update. This doesn't really matter, as no one was using this api anyway. But hey, it's good to practice documenting these things
1 parent 446906b commit f1972dc

File tree

3 files changed

+35
-126
lines changed

3 files changed

+35
-126
lines changed

api/handlers/datasets.go

Lines changed: 25 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (h *DatasetHandlers) DatasetsHandler(w http.ResponseWriter, r *http.Request
3838
case "PUT":
3939
h.updateDatasetHandler(w, r)
4040
case "POST":
41-
h.saveDatasetHandler(w, r)
41+
h.initDatasetHandler(w, r)
4242
default:
4343
util.NotFoundHandler(w, r)
4444
}
@@ -50,8 +50,6 @@ func (h *DatasetHandlers) DatasetHandler(w http.ResponseWriter, r *http.Request)
5050
util.EmptyOkHandler(w, r)
5151
case "GET":
5252
h.getDatasetHandler(w, r)
53-
case "POST":
54-
h.saveDatasetHandler(w, r)
5553
case "PUT":
5654
h.updateDatasetHandler(w, r)
5755
case "DELETE":
@@ -140,55 +138,6 @@ func (h *DatasetHandlers) getDatasetHandler(w http.ResponseWriter, r *http.Reque
140138
util.WriteResponse(w, res.Dataset)
141139
}
142140

143-
func (h *DatasetHandlers) saveDatasetHandler(w http.ResponseWriter, r *http.Request) {
144-
switch r.Header.Get("Content-Type") {
145-
case "application/json":
146-
h.saveStructureHandler(w, r)
147-
default:
148-
h.initDatasetHandler(w, r)
149-
}
150-
}
151-
152-
func (h *DatasetHandlers) updateDatasetHandler(w http.ResponseWriter, r *http.Request) {
153-
switch r.Header.Get("Content-Type") {
154-
case "application/json":
155-
h.updateMetadataHandler(w, r)
156-
// default:
157-
// h.initDatasetFileHandler(w, r)
158-
}
159-
}
160-
161-
func (h *DatasetHandlers) updateMetadataHandler(w http.ResponseWriter, r *http.Request) {
162-
p := &core.UpdateParams{}
163-
if err := json.NewDecoder(r.Body).Decode(p); err != nil {
164-
util.WriteErrResponse(w, http.StatusBadRequest, err)
165-
return
166-
}
167-
res := &repo.DatasetRef{}
168-
if err := h.Update(p, res); err != nil {
169-
h.log.Infof("error updating dataset: %s", err.Error())
170-
util.WriteErrResponse(w, http.StatusInternalServerError, err)
171-
return
172-
}
173-
util.WriteResponse(w, res)
174-
}
175-
176-
func (h *DatasetHandlers) saveStructureHandler(w http.ResponseWriter, r *http.Request) {
177-
p := &core.SaveParams{}
178-
if err := json.NewDecoder(r.Body).Decode(p); err != nil {
179-
util.WriteErrResponse(w, http.StatusBadRequest, err)
180-
return
181-
}
182-
res := &dataset.Dataset{}
183-
if err := h.Save(p, res); err != nil {
184-
h.log.Infof("error saving dataset: %s", err.Error())
185-
util.WriteErrResponse(w, http.StatusInternalServerError, err)
186-
return
187-
}
188-
189-
util.WriteResponse(w, res)
190-
}
191-
192141
func (h *DatasetHandlers) initDatasetHandler(w http.ResponseWriter, r *http.Request) {
193142
p := &core.InitDatasetParams{}
194143
if r.Header.Get("Content-Type") == "application/json" {
@@ -220,6 +169,30 @@ func (h *DatasetHandlers) initDatasetHandler(w http.ResponseWriter, r *http.Requ
220169
util.WriteResponse(w, res.Dataset)
221170
}
222171

172+
func (h *DatasetHandlers) updateDatasetHandler(w http.ResponseWriter, r *http.Request) {
173+
switch r.Header.Get("Content-Type") {
174+
case "application/json":
175+
h.updateMetadataHandler(w, r)
176+
// default:
177+
// h.initDatasetFileHandler(w, r)
178+
}
179+
}
180+
181+
func (h *DatasetHandlers) updateMetadataHandler(w http.ResponseWriter, r *http.Request) {
182+
p := &core.UpdateParams{}
183+
if err := json.NewDecoder(r.Body).Decode(p); err != nil {
184+
util.WriteErrResponse(w, http.StatusBadRequest, err)
185+
return
186+
}
187+
res := &repo.DatasetRef{}
188+
if err := h.Update(p, res); err != nil {
189+
h.log.Infof("error updating dataset: %s", err.Error())
190+
util.WriteErrResponse(w, http.StatusInternalServerError, err)
191+
return
192+
}
193+
util.WriteResponse(w, res)
194+
}
195+
223196
func (h *DatasetHandlers) deleteDatasetHandler(w http.ResponseWriter, r *http.Request) {
224197
p := &core.DeleteParams{
225198
Name: r.FormValue("name"),

core/datasets.go

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -300,31 +300,6 @@ func (r *DatasetRequests) Update(p *UpdateParams, res *repo.DatasetRef) (err err
300300
return nil
301301
}
302302

303-
type SaveParams struct {
304-
Name string
305-
Dataset *dataset.Dataset
306-
}
307-
308-
// TODO - naming of "save" is ambiguous
309-
func (r *DatasetRequests) Save(p *SaveParams, res *dataset.Dataset) error {
310-
ds := p.Dataset
311-
312-
path, err := dsfs.SaveDataset(r.repo.Store(), ds, true)
313-
if err != nil {
314-
return err
315-
}
316-
317-
if err := r.repo.PutName(p.Name, path); err != nil {
318-
return err
319-
}
320-
if err := r.repo.PutDataset(path, ds); err != nil {
321-
return err
322-
}
323-
324-
*res = *ds
325-
return nil
326-
}
327-
328303
type DeleteParams struct {
329304
Path datastore.Key
330305
Name string

core/datasets_test.go

Lines changed: 10 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,16 @@ func TestDatasetRequestsUpdate(t *testing.T) {
156156
t.Errorf("error allocating test repo: %s", err.Error())
157157
return
158158
}
159-
path, err := mr.GetPath("movies")
160-
if err != nil {
161-
t.Errorf("error getting path: %s", err.Error())
162-
return
163-
}
164-
moviesDs, err := dsfs.LoadDataset(mr.Store(), path)
165-
if err != nil {
166-
t.Errorf("error loading dataset: %s", err.Error())
167-
return
168-
}
159+
// path, err := mr.GetPath("movies")
160+
// if err != nil {
161+
// t.Errorf("error getting path: %s", err.Error())
162+
// return
163+
// }
164+
// moviesDs, err := dsfs.LoadDataset(mr.Store(), path)
165+
// if err != nil {
166+
// t.Errorf("error loading dataset: %s", err.Error())
167+
// return
168+
// }
169169
cases := []struct {
170170
p *UpdateParams
171171
res *repo.DatasetRef
@@ -192,45 +192,6 @@ func TestDatasetRequestsUpdate(t *testing.T) {
192192
}
193193
}
194194

195-
func TestDatasetRequestsSave(t *testing.T) {
196-
mr, err := testrepo.NewTestRepo()
197-
if err != nil {
198-
t.Errorf("error allocating test repo: %s", err.Error())
199-
return
200-
}
201-
path, err := mr.GetPath("movies")
202-
if err != nil {
203-
t.Errorf("error getting path: %s", err.Error())
204-
return
205-
}
206-
moviesDs, err := dsfs.LoadDataset(mr.Store(), path)
207-
if err != nil {
208-
t.Errorf("error loading dataset: %s", err.Error())
209-
return
210-
}
211-
212-
cases := []struct {
213-
p *SaveParams
214-
res *dataset.Dataset
215-
err string
216-
}{
217-
//TODO find out why this fails second time but not first
218-
{&SaveParams{Name: "ABC", Dataset: moviesDs}, nil, ""},
219-
{&SaveParams{Name: "ABC", Dataset: moviesDs}, nil, "error marshaling dataset abstract structure to json: json: error calling MarshalJSON for type *dataset.Structure: json: error calling MarshalJSON for type dataset.DataFormat: Unknown Data Format"},
220-
}
221-
222-
req := NewDatasetRequests(mr)
223-
for i, c := range cases {
224-
got := &dataset.Dataset{}
225-
err := req.Save(c.p, got)
226-
227-
if !(err == nil && c.err == "" || err != nil && err.Error() == c.err) {
228-
t.Errorf("case %d error mismatch: expected: %s, got: %s", i, c.err, err)
229-
continue
230-
}
231-
}
232-
}
233-
234195
func TestDatasetRequestsDelete(t *testing.T) {
235196
mr, err := testrepo.NewTestRepo()
236197
if err != nil {

0 commit comments

Comments
 (0)