mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
delete only time based views, and handle inverse views
This commit is contained in:
parent
753d89d45e
commit
80ab4cd193
2 changed files with 27 additions and 5 deletions
25
handler.go
25
handler.go
|
|
@ -803,12 +803,33 @@ func (h *Handler) handleDeleteView(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
if err := f.DeleteView(viewName); err != nil {
|
||||
// Check that the view name is an integer.
|
||||
if _, err := strconv.Atoi(viewName); err != nil {
|
||||
http.Error(w, "only time based views can be deleted", http.StatusBadRequest)
|
||||
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 standard view.
|
||||
if err := f.DeleteView(ViewStandard + "_" + viewName); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
// TODO: Send the delete frame message to all nodes.
|
||||
// Delete the inverse view.
|
||||
if f.InverseEnabled() {
|
||||
if err := f.DeleteView(ViewInverse + "_" + viewName); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Send the delete view message to all nodes.
|
||||
|
||||
// Encode response.
|
||||
if err := json.NewEncoder(w).Encode(deleteViewResponse{}); err != nil {
|
||||
|
|
|
|||
|
|
@ -1516,18 +1516,19 @@ func TestHandler_GetTimeStamp(t *testing.T) {
|
|||
func TestHandler_DeleteView(t *testing.T) {
|
||||
hldr := test.MustOpenHolder()
|
||||
defer hldr.Close()
|
||||
hldr.MustCreateFragmentIfNotExists("i0", "f0", "v0", 1).MustSetBits(30, (1*SliceWidth)+1)
|
||||
hldr.MustCreateFragmentIfNotExists("i0", "f0", pilosa.ViewStandard+"_2017", 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/v0", strings.NewReader("")))
|
||||
h.ServeHTTP(w, test.MustNewHTTPRequest("DELETE", "/index/i0/frame/f0/view/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("v0"); f != nil {
|
||||
} else if f := hldr.Index("i0").Frame("f0").View(pilosa.ViewStandard + "_2017"); f != nil {
|
||||
t.Fatal("expected nil view")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue