Use the full view name in the Delete API. Will need to append the prefix: standard_, inverse_, or field_

This commit is contained in:
Michael Baird 2017-08-25 08:11:00 -05:00
parent f5832cda02
commit 60a4ad0c52
4 changed files with 8 additions and 30 deletions

View file

@ -515,31 +515,14 @@ func (f *Frame) newView(path, name string) *View {
return view
}
// DeleteView removes the standard and inverse view from the frame.
// DeleteView removes the view from the frame.
func (f *Frame) DeleteView(name string) error {
// Delete the standard view.
if err := f.deleteView(ViewStandard + "_" + name); err != nil {
return err
}
// Delete the inverse view.
if f.InverseEnabled() {
if err := f.deleteView(ViewInverse + "_" + name); err != nil {
return err
}
}
return nil
}
// deleteView removes view from the frame.
func (f *Frame) deleteView(name string) error {
view := f.views[name]
if view == nil {
return ErrInvalidView
}
// Close data files before deletion
// Close data files before deletion.
if err := view.Close(); err != nil {
return err
}

View file

@ -323,7 +323,7 @@ func TestFrame_DeleteView(t *testing.T) {
t.Fatal("expected view")
}
err = f.DeleteView("v")
err = f.DeleteView(viewName)
if err != nil {
t.Fatal(err)
}
@ -332,7 +332,7 @@ func TestFrame_DeleteView(t *testing.T) {
t.Fatal("view still exists in frame")
}
// // Retrieve existing view.
// Recreate view with same name, verify that the old view was not reused.
view2, err := f.CreateViewIfNotExists(viewName)
if err != nil {
t.Fatal(err)

View file

@ -805,12 +805,6 @@ func (h *Handler) handleDeleteView(w http.ResponseWriter, r *http.Request) {
return
}
// Check the frame for time quantum.
if f.TimeQuantum() == "" {
http.Error(w, "frame does not contain a Time Quantum", http.StatusBadRequest)
return
}
// Delete the view.
if err := f.DeleteView(viewName); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)

View file

@ -1516,19 +1516,20 @@ func TestHandler_GetTimeStamp(t *testing.T) {
func TestHandler_DeleteView(t *testing.T) {
hldr := test.MustOpenHolder()
defer hldr.Close()
hldr.MustCreateFragmentIfNotExists("i0", "f0", pilosa.ViewStandard+"_2017", 1).MustSetBits(30, (1*SliceWidth)+1)
viewName := pilosa.ViewStandard + "_2017"
hldr.MustCreateFragmentIfNotExists("i0", "f0", viewName, 1).MustSetBits(30, (1*SliceWidth)+1)
hldr.Index("i0").Frame("f0").SetTimeQuantum("YMD")
h := test.NewHandler()
h.Holder = hldr.Holder
h.Cluster = test.NewCluster(1)
w := httptest.NewRecorder()
h.ServeHTTP(w, test.MustNewHTTPRequest("DELETE", "/index/i0/frame/f0/view/2017", strings.NewReader("")))
h.ServeHTTP(w, test.MustNewHTTPRequest("DELETE", "/index/i0/frame/f0/view/standard_2017", strings.NewReader("")))
if w.Code != http.StatusOK {
t.Fatalf("unexpected status code: %d", w.Code)
} else if body := w.Body.String(); body != `{}`+"\n" {
t.Fatalf("unexpected body: %s", body)
} else if f := hldr.Index("i0").Frame("f0").View(pilosa.ViewStandard + "_2017"); f != nil {
} else if f := hldr.Index("i0").Frame("f0").View(viewName); f != nil {
t.Fatal("expected nil view")
}
}