()
| 2152 | } |
| 2153 | |
| 2154 | func 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 | } |
no test coverage detected