mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-01-05 03:14:25 +00:00
Added meta operation.
This commit is contained in:
@@ -146,13 +146,25 @@ func (h *Handler) Handle(w common.ResponseWriter, r common.Request, params map[s
|
||||
h.handleRead(ctx, w, "", options)
|
||||
}
|
||||
case "POST":
|
||||
// Create operation
|
||||
// Read request body
|
||||
body, err := r.Body()
|
||||
if err != nil {
|
||||
logger.Error("Failed to read request body: %v", err)
|
||||
h.sendError(w, http.StatusBadRequest, "invalid_request", "Failed to read request body", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Try to detect if this is a meta operation request
|
||||
var bodyMap map[string]interface{}
|
||||
if err := json.Unmarshal(body, &bodyMap); err == nil {
|
||||
if operation, ok := bodyMap["operation"].(string); ok && operation == "meta" {
|
||||
logger.Info("Detected meta operation request for %s.%s", schema, entity)
|
||||
h.handleMeta(ctx, w, schema, entity, model)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Not a meta operation, proceed with normal create/update
|
||||
var data interface{}
|
||||
if err := json.Unmarshal(body, &data); err != nil {
|
||||
logger.Error("Failed to decode request body: %v", err)
|
||||
@@ -229,6 +241,21 @@ func (h *Handler) HandleGet(w common.ResponseWriter, r common.Request, params ma
|
||||
h.sendResponse(w, metadata, nil)
|
||||
}
|
||||
|
||||
// handleMeta processes meta operation requests
|
||||
func (h *Handler) handleMeta(ctx context.Context, w common.ResponseWriter, schema, entity string, model interface{}) {
|
||||
// Capture panics and return error response
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
h.handlePanic(w, "handleMeta", err)
|
||||
}
|
||||
}()
|
||||
|
||||
logger.Info("Getting metadata for %s.%s via meta operation", schema, entity)
|
||||
|
||||
metadata := h.generateMetadata(schema, entity, model)
|
||||
h.sendResponse(w, metadata, nil)
|
||||
}
|
||||
|
||||
// parseOptionsFromHeaders is now implemented in headers.go
|
||||
|
||||
func (h *Handler) handleRead(ctx context.Context, w common.ResponseWriter, id string, options ExtendedRequestOptions) {
|
||||
|
||||
Reference in New Issue
Block a user