| 38 | } |
| 39 | |
| 40 | func CollectApiCommits(taskCtx plugin.SubTaskContext) errors.Error { |
| 41 | db := taskCtx.GetDal() |
| 42 | rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_COMMIT_TABLE) |
| 43 | since := data.Since |
| 44 | incremental := false |
| 45 | if since == nil { |
| 46 | latestUpdated := &models.GiteeCommit{} |
| 47 | err := db.All( |
| 48 | &latestUpdated, |
| 49 | dal.Join("left join _tool_gitee_repo_commits on _tool_gitee_commits.sha = _tool_gitee_repo_commits.commit_sha"), |
| 50 | dal.Join("left join _tool_gitee_repos on _tool_gitee_repo_commits.repo_id = _tool_gitee_repos.gitee_id"), |
| 51 | dal.Where("_tool_gitee_repo_commits.repo_id = ? AND _tool_gitee_repo_commits.connection_id = ?", data.Repo.GiteeId, data.Repo.ConnectionId), |
| 52 | dal.Orderby("committed_date DESC"), |
| 53 | dal.Limit(1), |
| 54 | ) |
| 55 | |
| 56 | if err != nil { |
| 57 | return errors.Default.Wrap(err, "failed to get latest gitee commit record") |
| 58 | } |
| 59 | if latestUpdated.Sha != "" { |
| 60 | since = &latestUpdated.CommittedDate |
| 61 | incremental = true |
| 62 | } |
| 63 | } |
| 64 | |
| 65 | collector, err := helper.NewApiCollector(helper.ApiCollectorArgs{ |
| 66 | RawDataSubTaskArgs: *rawDataSubTaskArgs, |
| 67 | ApiClient: data.ApiClient, |
| 68 | PageSize: 100, |
| 69 | Incremental: incremental, |
| 70 | UrlTemplate: "repos/{{ .Params.Owner }}/{{ .Params.Repo }}/commits", |
| 71 | Query: func(reqData *helper.RequestData) (url.Values, errors.Error) { |
| 72 | query := url.Values{} |
| 73 | if since != nil { |
| 74 | query.Set("since", since.String()) |
| 75 | } |
| 76 | query.Set("page", strconv.Itoa(reqData.Pager.Page)) |
| 77 | query.Set("per_page", strconv.Itoa(reqData.Pager.Size)) |
| 78 | return query, nil |
| 79 | }, |
| 80 | Concurrency: 20, |
| 81 | ResponseParser: GetRawMessageFromResponse, |
| 82 | }) |
| 83 | |
| 84 | if err != nil { |
| 85 | return err |
| 86 | } |
| 87 | |
| 88 | return collector.Execute() |
| 89 | } |