mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-10-10 21:07:53 +00:00
add ability to post schema using holder.applySchema
New API warning: this adds ApplySchema to pilosa.API and allows POSTing to the /schema endpoint
This commit is contained in:
parent
5bcb00e11a
commit
0ef3e5e144
2 changed files with 21 additions and 1 deletions
4
api.go
4
api.go
|
|
@ -655,6 +655,10 @@ func (api *API) Schema(ctx context.Context) []*IndexInfo {
|
|||
return api.holder.limitedSchema()
|
||||
}
|
||||
|
||||
func (api *API) ApplySchema(ctx context.Context, s *Schema) error {
|
||||
return api.holder.applySchema(s)
|
||||
}
|
||||
|
||||
// Views returns the views in the given field.
|
||||
func (api *API) Views(ctx context.Context, indexName string, fieldName string) ([]*view, error) {
|
||||
span, _ := tracing.StartSpanFromContext(ctx, "API.Views")
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ func (h *Handler) populateValidators() {
|
|||
h.validators["GetInfo"] = queryValidationSpecRequired()
|
||||
h.validators["RecalculateCaches"] = queryValidationSpecRequired()
|
||||
h.validators["GetSchema"] = queryValidationSpecRequired()
|
||||
h.validators["PostSchema"] = queryValidationSpecRequired()
|
||||
h.validators["GetStatus"] = queryValidationSpecRequired()
|
||||
h.validators["GetVersion"] = queryValidationSpecRequired()
|
||||
h.validators["PostClusterMessage"] = queryValidationSpecRequired()
|
||||
|
|
@ -255,6 +256,7 @@ func newRouter(handler *Handler) *mux.Router {
|
|||
router.HandleFunc("/info", handler.handleGetInfo).Methods("GET").Name("GetInfo")
|
||||
router.HandleFunc("/recalculate-caches", handler.handleRecalculateCaches).Methods("POST").Name("RecalculateCaches")
|
||||
router.HandleFunc("/schema", handler.handleGetSchema).Methods("GET").Name("GetSchema")
|
||||
router.HandleFunc("/schema", handler.handlePostSchema).Methods("POST").Name("PostSchema")
|
||||
router.HandleFunc("/status", handler.handleGetStatus).Methods("GET").Name("GetStatus")
|
||||
router.HandleFunc("/version", handler.handleGetVersion).Methods("GET").Name("GetVersion")
|
||||
|
||||
|
|
@ -412,11 +414,25 @@ func (h *Handler) handleGetSchema(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
schema := h.api.Schema(r.Context())
|
||||
if err := json.NewEncoder(w).Encode(map[string]interface{}{"indexes": schema}); err != nil {
|
||||
if err := json.NewEncoder(w).Encode(map[string]interface{}{"indexes": schema}); err != nil { // TODO: use pilosa.Schema instead of map[string]interface{} here?
|
||||
h.logger.Printf("write schema response error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) handlePostSchema(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Println("here")
|
||||
schema := &pilosa.Schema{}
|
||||
if err := json.NewDecoder(r.Body).Decode(schema); err != nil {
|
||||
http.Error(w, fmt.Sprintf("decoding request as JSON Pilosa schema: %v", err), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.api.ApplySchema(r.Context(), schema); err != nil {
|
||||
http.Error(w, fmt.Sprintf("apply schema to Pilosa: %v", err), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// handleGetStatus handles GET /status requests.
|
||||
func (h *Handler) handleGetStatus(w http.ResponseWriter, r *http.Request) {
|
||||
if !validHeaderAcceptJSON(r.Header) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue