From b87dae50fced2713fc723c066e2bfb534f095f18 Mon Sep 17 00:00:00 2001 From: Yilin Jing Date: Fri, 27 Feb 2026 14:26:51 +0800 Subject: [PATCH] fix(backend): unmarshal Kickstarter GraphQL pid as json.Number Kickstarter returns pid as a JSON number, not a string. Using json.Number handles both formats and converts to string via .String(). --- backend/internal/service/kickstarter_graph.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/internal/service/kickstarter_graph.go b/backend/internal/service/kickstarter_graph.go index befbac5..bfd57e0 100644 --- a/backend/internal/service/kickstarter_graph.go +++ b/backend/internal/service/kickstarter_graph.go @@ -151,12 +151,12 @@ type graphSearchResp struct { Data struct { Projects struct { Nodes []struct { - PID string `json:"pid"` - Name string `json:"name"` - State string `json:"state"` - DeadlineAt *string `json:"deadlineAt"` - PercentFunded float64 `json:"percentFunded"` - URL string `json:"url"` + PID json.Number `json:"pid"` + Name string `json:"name"` + State string `json:"state"` + DeadlineAt *string `json:"deadlineAt"` + PercentFunded float64 `json:"percentFunded"` + URL string `json:"url"` Image *struct { URL string `json:"url"` } `json:"image"` @@ -212,7 +212,7 @@ func (c *KickstarterGraphClient) Search(term, categoryID, sort, cursor string, f campaigns := make([]model.Campaign, 0, len(resp.Data.Projects.Nodes)) for _, n := range resp.Data.Projects.Nodes { cam := model.Campaign{ - PID: n.PID, + PID: n.PID.String(), Name: n.Name, State: n.State, ProjectURL: n.URL,