func schemaCmd()

in server/schema_handler.go [241:281]


func schemaCmd(w http.ResponseWriter, r *http.Request) {
	var err error
	//TODO: Validate schema

	s := parseSchemaForm(w, r)
	if s == nil {
		return
	}

	log.Infof("Received schema command with parameters: %+v", s)

	if s.Cmd == "list" {
		err = handleSchemaListCmd(w, s)
	} else if len(s.Type) == 0 {
		err = errors.New("type field cannot be empty")
	} else if len(s.Name) == 0 && s.Cmd != "register" && s.Cmd != "change" {
		err = errors.New("name field cannot be empty")
	} else if s.Cmd == "add" {
		err = state.InsertSchema(s.Name, s.Type, s.Body)
	} else if s.Cmd == "del" {
		err = state.DeleteSchema(s.Name, s.Type)
	} else if s.InputType == "" || s.Output == "" {
		err = errors.New("InputType and Output cannot be empty")
	} else if s.Cmd == "register" {
		err = SchemaRegister(s.Service, s.Cluster, s.DB, s.Table, s.InputType, s.Output, s.Version, s.Type, s.Dst, s.CreateTopic)
	} else if s.Cmd == "change" { //mutate, alter?
		err = SchemaChange(s.Service, s.Cluster, s.DB, s.Table, s.InputType, s.Output, s.Version, s.Type, s.Alter, s.Dst)
	} else {
		err = errors.New("unknown command (possible commands: add/del/register/change)")
	}

	if err != nil {
		log.Errorf("Schema http: cmd=%v, name=%v, schema=%v, error=%v", s.Cmd, s.Name, s.Body, err)
		//FIXME: Do not return actual error
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(http.StatusOK)
}