diff options
Diffstat (limited to 'models/repo/repo.go')
-rw-r--r-- | models/repo/repo.go | 47 |
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 +} |