func HandleFind(registry kit.Registry, request kit.Request) (kit.Response, bool) { collection := request.GetContext().MustString("collection") res := registry.Resource(collection) if res == nil || !res.IsPublic() { err := &apperror.Err{ Code: "unknown_resource", Message: fmt.Sprintf("The resource '%v' does not exist", collection), } return kit.NewErrorResponse(err), false } response, err := Find(res, request) if err != nil { response = kit.NewErrorResponse(err) } // If response contains a count and the request a "perPage" param, add a total_pages param // to meta. perPage, err2 := request.GetContext().Int("per_page") meta := response.GetMeta() if meta != nil && err2 == nil { count, ok := meta["count"] if ok { meta["total_pages"] = math.Ceil(float64(count.(int)) / float64(perPage)) } } return response, false }
func HandleDelete(registry kit.Registry, request kit.Request) (kit.Response, bool) { collection := request.GetContext().MustString("collection") id := request.GetContext().MustString("id") res := registry.Resource(collection) if res == nil || !res.IsPublic() { resp := kit.NewErrorResponse("unknown_resource", fmt.Sprintf("The resource '%v' does not exist", collection)) return resp, false } return res.ApiDelete(id, request), false }
func Update(registry kit.Registry, request kit.Request) (kit.Response, apperror.Error) { collection := request.GetContext().MustString("collection") res := registry.Resource(collection) if res == nil || !res.IsPublic() { return nil, &apperror.Err{ Code: "unknown_resource", Message: fmt.Sprintf("The resource '%v' does not exist", collection), } } model, ok := request.GetData().(kit.Model) if !ok { return nil, apperror.New("invalid_data_no_model", "Node model data in request.") } response := res.ApiUpdate(model, request) return response, nil }
func Create(registry kit.Registry, request kit.Request) (kit.Response, apperror.Error) { collection := request.GetContext().MustString("collection") res := registry.Resource(collection) if res == nil || !res.IsPublic() { return nil, &apperror.Err{ Code: "unknown_resource", Message: fmt.Sprintf("The resource '%v' does not exist", collection), } } fmt.Printf("data: %v | %+v\n\n", nil, request.GetData()) model, ok := request.GetData().(kit.Model) if !ok { return nil, apperror.New("invalid_data_no_model", "No model data in request.") } response := res.ApiCreate(model, request) if response.GetError() == nil { response.SetHttpStatus(201) } return response, nil }