Skip to content

Commit

Permalink
add export route
Browse files Browse the repository at this point in the history
  • Loading branch information
madneal committed Dec 28, 2024
1 parent 46daf05 commit 6b87e0d
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
53 changes: 53 additions & 0 deletions server/api/search_result.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package api

import (
"encoding/csv"
"fmt"
"github.com/gin-gonic/gin"
"github.com/madneal/gshark/global"
Expand All @@ -10,10 +11,16 @@ import (
"github.com/madneal/gshark/search/githubsearch"
"github.com/madneal/gshark/service"
"go.uber.org/zap"
"net/http"
"strings"
)

var taskStatus = "stop"
var statusOptions = map[int]string{
0: "未处理", // Unprocessed
1: "已处理", // Processed
2: "已忽略", // Ignored
}

func CreateSearchResult(c *gin.Context) {
var searchResult model.SearchResult
Expand Down Expand Up @@ -159,3 +166,49 @@ func GetSearchResultList(c *gin.Context) {
}, "获取成功", c)
}
}

func ExportSearchResult(c *gin.Context) {
var searchInfo request.SearchResultSearch
_ = c.ShouldBindQuery(&searchInfo)
searchInfo.PageInfo.Page = 1
searchInfo.PageInfo.PageSize = 10000
c.Header("Content-Type", "text/csv")
c.Header("Content-Disposition", `attachment; filename="search_results.csv"`)
writer := csv.NewWriter(c.Writer)
headers := []string{"Repo", "RepoUrl", "Matches", "Keyword", "SecKeyword", "Path",
"Url", "Status", "TextMatchesJson"}
if err := writer.Write(headers); err != nil {
response.FailWithMessage("导出失败", c)
return
}
err, list, _ := service.GetSearchResultInfoList(searchInfo)
if err != nil {
global.GVA_LOG.Error("GetSearchResultInfoList err", zap.Any("err", err))
response.FailWithMessage(err.Error(), c)
return
}
searchResults, _ := list.([]model.SearchResult)
for _, result := range searchResults {
row := []string{
result.Repo,
result.RepoUrl,
result.Matches,
result.Keyword,
result.SecKeyword,
result.Path,
result.Url,
statusOptions[result.Status],
string(result.TextMatchesJson),
}
if err := writer.Write(row); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"message": "Failed to write CSV row",
})
return
}
}
writer.Flush()
if err = writer.Error(); err != nil {
response.FailWithMessage(err.Error(), c)
}
}
1 change: 1 addition & 0 deletions server/router/search_result.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ func InitSearchResultRouter(Router *gin.RouterGroup) {
SearchResultRouter.POST("updateSearchResult", api.UpdateSearchResult) // 更新SearchResult
SearchResultRouter.GET("findSearchResult", api.FindSearchResult) // 根据ID获取SearchResult
SearchResultRouter.GET("getSearchResultList", api.GetSearchResultList) // 获取SearchResult列表
SearchResultRouter.GET("exportSearchResult", api.ExportSearchResult)
SearchResultRouter.POST("updateSearchResultStatusByIds", api.UpdateSearchResultByIds)
SearchResultRouter.POST("startSecFilterTask", api.StartSecFilterTask)
SearchResultRouter.GET("getTaskStatus", api.GetTaskStatus)
Expand Down
1 change: 1 addition & 0 deletions server/source/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ var apis = []model.SysApi{
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/updateSearchResult", "更新搜索结果", "searchResult", "POST"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/findSearchResult", "根据ID获取搜索结果", "searchResult", "GET"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/getSearchResultList", "获取搜索结果列表", "searchResult", "GET"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/exportSearchResult", "导出结果列表", "searchResult", "GET"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/updateSearchResultStatusByIds", "批量更新搜索结果列表", "searchResult", "POST"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/startSecFilterTask", "开始二次过滤任务", "searchResult", "POST"},
{global.GVA_MODEL{CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/searchResult/getTaskStatus", "获取任务状态", "searchResult", "GET"},
Expand Down

0 comments on commit 6b87e0d

Please sign in to comment.