MCPcopy Create free account
hub / github.com/gogs/gogs / CheckRepoStats

Function CheckRepoStats

internal/database/repo.go:2154–2246  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2152}
2153
2154func CheckRepoStats() {
2155 if taskStatusTable.IsRunning(taskNameCheckRepoStats) {
2156 return
2157 }
2158 taskStatusTable.Start(taskNameCheckRepoStats)
2159 defer taskStatusTable.Stop(taskNameCheckRepoStats)
2160
2161 log.Trace("Doing: CheckRepoStats")
2162
2163 checkers := []*repoChecker{
2164 // Repository.NumWatches
2165 {
2166 "SELECT repo.id FROM `repository` repo WHERE repo.num_watches!=(SELECT COUNT(*) FROM `watch` WHERE repo_id=repo.id)",
2167 "UPDATE `repository` SET num_watches=(SELECT COUNT(*) FROM `watch` WHERE repo_id=?) WHERE id=?",
2168 "repository count 'num_watches'",
2169 },
2170 // Repository.NumStars
2171 {
2172 "SELECT repo.id FROM `repository` repo WHERE repo.num_stars!=(SELECT COUNT(*) FROM `star` WHERE repo_id=repo.id)",
2173 "UPDATE `repository` SET num_stars=(SELECT COUNT(*) FROM `star` WHERE repo_id=?) WHERE id=?",
2174 "repository count 'num_stars'",
2175 },
2176 // Label.NumIssues
2177 {
2178 "SELECT label.id FROM `label` WHERE label.num_issues!=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=label.id)",
2179 "UPDATE `label` SET num_issues=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=?) WHERE id=?",
2180 "label count 'num_issues'",
2181 },
2182 // User.NumRepos
2183 {
2184 "SELECT `user`.id FROM `user` WHERE `user`.num_repos!=(SELECT COUNT(*) FROM `repository` WHERE owner_id=`user`.id)",
2185 "UPDATE `user` SET num_repos=(SELECT COUNT(*) FROM `repository` WHERE owner_id=?) WHERE id=?",
2186 "user count 'num_repos'",
2187 },
2188 // Issue.NumComments
2189 {
2190 "SELECT `issue`.id FROM `issue` WHERE `issue`.num_comments!=(SELECT COUNT(*) FROM `comment` WHERE issue_id=`issue`.id AND type=0)",
2191 "UPDATE `issue` SET num_comments=(SELECT COUNT(*) FROM `comment` WHERE issue_id=? AND type=0) WHERE id=?",
2192 "issue count 'num_comments'",
2193 },
2194 }
2195 for i := range checkers {
2196 repoStatsCheck(checkers[i])
2197 }
2198
2199 // ***** START: Repository.NumClosedIssues *****
2200 desc := "repository count 'num_closed_issues'"
2201 results, err := x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, false)
2202 if err != nil {
2203 log.Error("Select %s: %v", desc, err)
2204 } else {
2205 for _, result := range results {
2206 id := com.StrTo(result["id"]).MustInt64()
2207 log.Trace("Updating %s: %d", desc, id)
2208 _, err = x.Exec("UPDATE `repository` SET num_closed_issues=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=? AND is_pull=?) WHERE id=?", id, true, false, id)
2209 if err != nil {
2210 log.Error("Update %s[%d]: %v", desc, id, err)
2211 }

Callers 1

NewContextFunction · 0.92

Calls 9

repoStatsCheckFunction · 0.85
GetRepositoryByIDFunction · 0.85
parseCountResultFunction · 0.85
UpdateRepositoryFunction · 0.85
IsRunningMethod · 0.80
StopMethod · 0.80
ExecMethod · 0.80
StartMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected