From dc86f93a281c597f149a0e8d9e95e579297037ef Mon Sep 17 00:00:00 2001 From: satori Date: Mon, 16 Dec 2024 11:54:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/search.go | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ bin/main.go | 1 + 2 files changed, 70 insertions(+) create mode 100644 api/search.go diff --git a/api/search.go b/api/search.go new file mode 100644 index 0000000..1189393 --- /dev/null +++ b/api/search.go @@ -0,0 +1,69 @@ +package api + +import ( + "encoding/json" + "io" + "log" + "net/http" + + "github.com/graphql-go/graphql" +) + +type Search struct { + Name string `json:"text"` + Count int `json:"count"` +} + +var SearchItem = graphql.NewObject(graphql.ObjectConfig{ + Name: "Search", + Description: "搜索", + Fields: graphql.Fields{ + "name": &graphql.Field{Type: graphql.String, Description: "搜索词"}, + }, +}) + +var SearchItems = &graphql.Field{ + Name: "Searchs", + Description: "搜索词列表", + Type: graphql.NewObject(graphql.ObjectConfig{ + Name: "SearchConnection", + Description: "搜索词列表", + Fields: graphql.Fields{ + "list": &graphql.Field{Type: graphql.NewList(SearchItem), Description: "搜索词列表"}, + }, + }), + Args: graphql.FieldConfigArgument{ + "name": &graphql.ArgumentConfig{Type: graphql.String, Description: "按指定字符筛选"}, + }, + Resolve: func(p graphql.ResolveParams) (interface{}, error) { + var searchs []Search + + // 发送 GET 请求 + resp, err := http.Get("http://localhost:6005/api/get_search/hot") + if err != nil { + log.Fatalf("Failed to fetch data: %v", err) + } + defer resp.Body.Close() + + // 读取响应体 + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Println("Failed to read response body: %v", err) + } + + // 检查 HTTP 状态码 + if resp.StatusCode != http.StatusOK { + log.Println("HTTP request failed with status code: %d", resp.StatusCode) + } + + // 解码 JSON 数据 + err = json.Unmarshal(body, &searchs) + if err != nil { + log.Println("Failed to parse JSON: %v", err) + } + + return map[string]interface{}{ + "list": searchs, + }, err + }, +} diff --git a/bin/main.go b/bin/main.go index 7583b3a..16eb7cc 100644 --- a/bin/main.go +++ b/bin/main.go @@ -246,6 +246,7 @@ func main() { "article": api.ArticleItem, "images": api.ImageItems, "image": api.ImageItem, + "searchs": api.SearchItems, }})}) if err != nil {