package etsy import ( "encoding/json" "fmt" "net/http" "time" "ruben/inventory2/internal/domains/raw_events" ) func NewWebhookHandler(db *raw_events.Store) http.Handler { mux := http.NewServeMux() mux.HandleFunc("POST /test", func(w http.ResponseWriter, r *http.Request) { var body json.RawMessage if err := json.NewDecoder(r.Body).Decode(&body); err != nil { http.Error(w, "Failed to decode body as json: "+err.Error(), 500) return } ts := time.Now().UTC() storeID := "test-store-id" var payloadObject struct { StoreID string } if err := json.Unmarshal(body, &payloadObject); err == nil && payloadObject.StoreID != "" { storeID = payloadObject.StoreID } err := db.Save(r.Context(), &raw_events.Event{ Platform: "etsy", StoreID: storeID, EventID: fmt.Sprint(ts.Unix()), EventTimestamp: ts, Payload: body, }) if err != nil { http.Error(w, "Error occurred saving the body as the event payload: "+err.Error(), 500) return } w.WriteHeader(201) }) return mux }