diff options
Diffstat (limited to 'models/repo/repo.go')
-rw-r--r-- | models/repo/repo.go | 82 |
1 files changed, 30 insertions, 52 deletions
diff --git a/models/repo/repo.go b/models/repo/repo.go index 8af6357bf3..3fd6b94eb1 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -289,7 +289,7 @@ func (repo *Repository) LoadUnits(ctx context.Context) (err error) { return nil } - repo.Units, err = getUnitsByRepoID(db.GetEngine(ctx), repo.ID) + repo.Units, err = getUnitsByRepoID(ctx, repo.ID) if log.IsTrace() { unitTypeStrings := make([]string, len(repo.Units)) for i, unit := range repo.Units { @@ -383,7 +383,7 @@ func (repo *Repository) GetOwner(ctx context.Context) (err error) { return nil } - repo.Owner, err = user_model.GetUserByIDEngine(db.GetEngine(ctx), repo.OwnerID) + repo.Owner, err = user_model.GetUserByIDCtx(ctx, repo.OwnerID) return err } @@ -454,15 +454,15 @@ func (repo *Repository) ComposeDocumentMetas() map[string]string { // returns an error on failure (NOTE: no error is returned for // non-fork repositories, and BaseRepo will be left untouched) func (repo *Repository) GetBaseRepo() (err error) { - return repo.getBaseRepo(db.GetEngine(db.DefaultContext)) + return repo.getBaseRepo(db.DefaultContext) } -func (repo *Repository) getBaseRepo(e db.Engine) (err error) { +func (repo *Repository) getBaseRepo(ctx context.Context) (err error) { if !repo.IsFork { return nil } - repo.BaseRepo, err = getRepositoryByID(e, repo.ForkID) + repo.BaseRepo, err = GetRepositoryByIDCtx(ctx, repo.ForkID) return err } @@ -481,16 +481,6 @@ func (repo *Repository) RepoPath() string { return RepoPath(repo.OwnerName, repo.Name) } -// GitConfigPath returns the path to a repository's git config/ directory -func GitConfigPath(repoPath string) string { - return filepath.Join(repoPath, "config") -} - -// GitConfigPath returns the repository git config path -func (repo *Repository) GitConfigPath() string { - return GitConfigPath(repo.RepoPath()) -} - // Link returns the repository link func (repo *Repository) Link() string { return setting.AppSubURL + "/" + url.PathEscape(repo.OwnerName) + "/" + url.PathEscape(repo.Name) @@ -669,9 +659,10 @@ func GetRepositoryByName(ownerID int64, name string) (*Repository, error) { return repo, err } -func getRepositoryByID(e db.Engine, id int64) (*Repository, error) { +// GetRepositoryByIDCtx returns the repository by given id if exists. +func GetRepositoryByIDCtx(ctx context.Context, id int64) (*Repository, error) { repo := new(Repository) - has, err := e.ID(id).Get(repo) + has, err := db.GetEngine(ctx).ID(id).Get(repo) if err != nil { return nil, err } else if !has { @@ -682,12 +673,7 @@ func getRepositoryByID(e db.Engine, id int64) (*Repository, error) { // GetRepositoryByID returns the repository by given id if exists. func GetRepositoryByID(id int64) (*Repository, error) { - return getRepositoryByID(db.GetEngine(db.DefaultContext), id) -} - -// GetRepositoryByIDCtx returns the repository by given id if exists. -func GetRepositoryByIDCtx(ctx context.Context, id int64) (*Repository, error) { - return getRepositoryByID(db.GetEngine(ctx), id) + return GetRepositoryByIDCtx(db.DefaultContext, id) } // GetRepositoriesMapByIDs returns the repositories by given id slice. @@ -696,8 +682,8 @@ func GetRepositoriesMapByIDs(ids []int64) (map[int64]*Repository, error) { return repos, db.GetEngine(db.DefaultContext).In("id", ids).Find(&repos) } -// IsRepositoryExistCtx returns true if the repository with given name under user has already existed. -func IsRepositoryExistCtx(ctx context.Context, u *user_model.User, repoName string) (bool, error) { +// IsRepositoryExist returns true if the repository with given name under user has already existed. +func IsRepositoryExist(ctx context.Context, u *user_model.User, repoName string) (bool, error) { has, err := db.GetEngine(ctx).Get(&Repository{ OwnerID: u.ID, LowerName: strings.ToLower(repoName), @@ -709,29 +695,20 @@ func IsRepositoryExistCtx(ctx context.Context, u *user_model.User, repoName stri return has && isDir, err } -// IsRepositoryExist returns true if the repository with given name under user has already existed. -func IsRepositoryExist(u *user_model.User, repoName string) (bool, error) { - return IsRepositoryExistCtx(db.DefaultContext, u, repoName) -} - // GetTemplateRepo populates repo.TemplateRepo for a generated repository and // returns an error on failure (NOTE: no error is returned for // non-generated repositories, and TemplateRepo will be left untouched) -func GetTemplateRepo(repo *Repository) (*Repository, error) { - return getTemplateRepo(db.GetEngine(db.DefaultContext), repo) -} - -func getTemplateRepo(e db.Engine, repo *Repository) (*Repository, error) { +func GetTemplateRepo(ctx context.Context, repo *Repository) (*Repository, error) { if !repo.IsGenerated() { return nil, nil } - return getRepositoryByID(e, repo.TemplateID) + return GetRepositoryByIDCtx(ctx, repo.TemplateID) } // TemplateRepo returns the repository, which is template of this repository func (repo *Repository) TemplateRepo() *Repository { - repo, err := GetTemplateRepo(repo) + repo, err := GetTemplateRepo(db.DefaultContext, repo) if err != nil { log.Error("TemplateRepo: %v", err) return nil @@ -739,26 +716,27 @@ func (repo *Repository) TemplateRepo() *Repository { return repo } -func countRepositories(userID int64, private bool) int64 { - sess := db.GetEngine(db.DefaultContext).Where("id > 0") +type CountRepositoryOptions struct { + OwnerID int64 + Private util.OptionalBool +} - if userID > 0 { - sess.And("owner_id = ?", userID) +// CountRepositories returns number of repositories. +// Argument private only takes effect when it is false, +// set it true to count all repositories. +func CountRepositories(ctx context.Context, opts CountRepositoryOptions) (int64, error) { + sess := db.GetEngine(ctx).Where("id > 0") + + if opts.OwnerID > 0 { + sess.And("owner_id = ?", opts.OwnerID) } - if !private { - sess.And("is_private=?", false) + if !opts.Private.IsNone() { + sess.And("is_private=?", opts.Private.IsTrue()) } count, err := sess.Count(new(Repository)) if err != nil { - log.Error("countRepositories: %v", err) + return 0, fmt.Errorf("countRepositories: %v", err) } - return count -} - -// CountRepositories returns number of repositories. -// Argument private only takes effect when it is false, -// set it true to count all repositories. -func CountRepositories(private bool) int64 { - return countRepositories(-1, private) + return count, nil } |