mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-10-08 03:47:51 +00:00
Use the full view name in the Delete API. Will need to append the prefix: standard_, inverse_, or field_
This commit is contained in:
parent
f5832cda02
commit
60a4ad0c52
4 changed files with 8 additions and 30 deletions
21
frame.go
21
frame.go
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue