diff options
author | Unknwon <u@gogs.io> | 2015-08-30 01:13:24 +0800 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-08-30 01:13:24 +0800 |
commit | d01f688257b028132fd75fd7200093c97282a97d (patch) | |
tree | 56dbdd78c17aff0de808363acf21420d709716b3 /models/repo.go | |
parent | 9b9e5f02901ab457656ee80bf7b27a663db4d73f (diff) | |
download | gitea-d01f688257b028132fd75fd7200093c97282a97d.tar.gz gitea-d01f688257b028132fd75fd7200093c97282a97d.zip |
fix repository count of user is messed up
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/models/repo.go b/models/repo.go index 3aa7b5e47b..7e662ee42d 100644 --- a/models/repo.go +++ b/models/repo.go @@ -649,8 +649,13 @@ func createRepository(e *xorm.Session, u *User, repo *Repository) (err error) { if _, err = e.Insert(repo); err != nil { return err - } else if _, err = e.Exec("UPDATE `user` SET num_repos=num_repos+1 WHERE id=?", u.Id); err != nil { - return err + } + + u.NumRepos++ + // Remember visibility preference. + u.LastRepoVisibility = repo.IsPrivate + if err = updateUser(e, u); err != nil { + return fmt.Errorf("updateUser: %v", err) } // Give access to all members in owner team. @@ -1279,7 +1284,7 @@ func CheckRepoStats() { log.Trace("Doing: CheckRepoStats") - // ***** START: Watch ***** + // ***** START: Repository.NumWatches ***** results, err := x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_watches!=(SELECT COUNT(*) FROM `watch` WHERE repo_id=repo.id)") if err != nil { log.Error(4, "Select repository check 'watch': %v", err) @@ -1293,9 +1298,9 @@ func CheckRepoStats() { log.Error(4, "Update repository check 'watch'[%d]: %v", repoID, err) } } - // ***** END: Watch ***** + // ***** END: Repository.NumWatches ***** - // ***** START: Star ***** + // ***** START: Repository.NumStars ***** results, err = x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_stars!=(SELECT COUNT(*) FROM `star` WHERE repo_id=repo.id)") if err != nil { log.Error(4, "Select repository check 'star': %v", err) @@ -1309,9 +1314,9 @@ func CheckRepoStats() { log.Error(4, "Update repository check 'star'[%d]: %v", repoID, err) } } - // ***** END: Star ***** + // ***** END: Repository.NumStars ***** - // ***** START: Label ***** + // ***** START: Label.NumIssues ***** results, err = x.Query("SELECT label.id FROM `label` WHERE label.num_issues!=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=label.id)") if err != nil { log.Error(4, "Select label check 'num_issues': %v", err) @@ -1325,7 +1330,23 @@ func CheckRepoStats() { log.Error(4, "Update label check 'num_issues'[%d]: %v", labelID, err) } } - // ***** END: Label ***** + // ***** END: Label.NumIssues ***** + + // ***** START: User.NumRepos ***** + results, err = x.Query("SELECT `user`.id FROM `user` WHERE `user`.num_repos!=(SELECT COUNT(*) FROM `repository` WHERE owner_id=`user`.id)") + if err != nil { + log.Error(4, "Select user check 'num_repos': %v", err) + return + } + for _, user := range results { + userID := com.StrTo(user["id"]).MustInt64() + log.Trace("Updating user count 'num_repos': %d", userID) + _, err = x.Exec("UPDATE `user` SET num_repos=(SELECT COUNT(*) FROM `repository` WHERE owner_id=?) WHERE id=?", userID, userID) + if err != nil { + log.Error(4, "Update user check 'num_repos'[%d]: %v", userID, err) + } + } + // ***** END: User.NumRepos ***** } // _________ .__ .__ ___. __ .__ |