func repoDeleteHandler(c web.C, w http.ResponseWriter, r *http.Request) { uuid := c.Env["uuid"].(dvid.UUID) queryValues := r.URL.Query() imsure := queryValues.Get("imsure") if imsure != "true" { BadRequest(w, r, "Cannot delete instance unless query string 'imsure=true' is present!") return } dataname, ok := c.URLParams["dataname"] if !ok { BadRequest(w, r, "Error in retrieving data instance name from URL parameters") return } // Do the deletion asynchronously since they can take a very long time. go func() { if err := datastore.DeleteDataByUUID(uuid, dvid.InstanceName(dataname)); err != nil { dvid.Errorf("Error in deleting data instance %q: %v", dataname, err) } }() // Just respond that deletion was successfully started w.Header().Set("Content-Type", "application/json") fmt.Fprintf(w, `{"result": "Started deletion of data instance %q from repo with root %s"}`, dataname, uuid) }
func repoDeleteInstanceHandler(c web.C, w http.ResponseWriter, r *http.Request) { uuid := c.Env["uuid"].(dvid.UUID) queryValues := r.URL.Query() imsure := queryValues.Get("imsure") if imsure != "true" { BadRequest(w, r, "Cannot delete instance unless query string 'imsure=true' is present!") return } dataname, ok := c.URLParams["dataname"] if !ok { BadRequest(w, r, "Error retrieving data instance name from URL parameters") return } // Make sure this instance exists. _, err := datastore.GetDataByUUID(uuid, dvid.InstanceName(dataname)) if err != nil { BadRequest(w, r, "Error trying to delete %q for UUID %s: %v", dataname, uuid, err) return } // Do the deletion. Under hood, modifies metadata immediately and launches async k/v deletion. if err := datastore.DeleteDataByUUID(uuid, dvid.InstanceName(dataname)); err != nil { BadRequest(w, r, "Error deleting data instance %q: %v", dataname, err) return } // Just respond that deletion was successfully started w.Header().Set("Content-Type", "application/json") fmt.Fprintf(w, `{"result": "Started deletion of data instance %q from repo with root %s"}`, dataname, uuid) }