summaryrefslogtreecommitdiffstats
path: root/models/repo/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo/repo.go')
-rw-r--r--models/repo/repo.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/models/repo/repo.go b/models/repo/repo.go
index 57d85435eb..f6097d2d6a 100644
--- a/models/repo/repo.go
+++ b/models/repo/repo.go
@@ -25,6 +25,22 @@ import (
"code.gitea.io/gitea/modules/util"
)
+// ErrUserDoesNotHaveAccessToRepo represets an error where the user doesn't has access to a given repo.
+type ErrUserDoesNotHaveAccessToRepo struct {
+ UserID int64
+ RepoName string
+}
+
+// IsErrUserDoesNotHaveAccessToRepo checks if an error is a ErrRepoFileAlreadyExists.
+func IsErrUserDoesNotHaveAccessToRepo(err error) bool {
+ _, ok := err.(ErrUserDoesNotHaveAccessToRepo)
+ return ok
+}
+
+func (err ErrUserDoesNotHaveAccessToRepo) Error() string {
+ return fmt.Sprintf("user doesn't have access to repo [user_id: %d, repo_name: %s]", err.UserID, err.RepoName)
+}
+
var (
reservedRepoNames = []string{".", "..", "-"}
reservedRepoPatterns = []string{"*.git", "*.wiki", "*.rss", "*.atom"}
@@ -743,3 +759,34 @@ func CountRepositories(ctx context.Context, opts CountRepositoryOptions) (int64,
}
return count, nil
}
+
+// StatsCorrectNumClosed update repository's issue related numbers
+func StatsCorrectNumClosed(ctx context.Context, id int64, isPull bool, field string) error {
+ _, err := db.Exec(ctx, "UPDATE `repository` SET "+field+"=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=? AND is_pull=?) WHERE id=?", id, true, isPull, id)
+ return err
+}
+
+// UpdateRepoIssueNumbers update repository issue numbers
+func UpdateRepoIssueNumbers(ctx context.Context, repoID int64, isPull, isClosed bool) error {
+ e := db.GetEngine(ctx)
+ if isPull {
+ if _, err := e.ID(repoID).Decr("num_pulls").Update(new(Repository)); err != nil {
+ return err
+ }
+ if isClosed {
+ if _, err := e.ID(repoID).Decr("num_closed_pulls").Update(new(Repository)); err != nil {
+ return err
+ }
+ }
+ } else {
+ if _, err := e.ID(repoID).Decr("num_issues").Update(new(Repository)); err != nil {
+ return err
+ }
+ if isClosed {
+ if _, err := e.ID(repoID).Decr("num_closed_issues").Update(new(Repository)); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}