mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-03-11 13:59:36 +02:00
Use forgeID for repo search
This commit is contained in:
parent
faa9ea465f
commit
f5711af205
@ -47,8 +47,10 @@ func GetBadge(c *gin.Context) {
|
||||
var repo *model.Repo
|
||||
var err error
|
||||
|
||||
forgeID := int64(1) // TODO: get forge id somehow
|
||||
|
||||
if c.Param("repo_name") != "" {
|
||||
repo, err = _store.GetRepoName(c.Param("repo_id_or_owner") + "/" + c.Param("repo_name"))
|
||||
repo, err = _store.GetRepoName(c.Param("repo_id_or_owner")+"/"+c.Param("repo_name"), forgeID)
|
||||
} else {
|
||||
var repoID int64
|
||||
repoID, err = strconv.ParseInt(c.Param("repo_id_or_owner"), 10, 64)
|
||||
@ -101,8 +103,10 @@ func GetCC(c *gin.Context) {
|
||||
var repo *model.Repo
|
||||
var err error
|
||||
|
||||
forgeID := int64(1) // TODO: get forge id somehow
|
||||
|
||||
if c.Param("repo_name") != "" {
|
||||
repo, err = _store.GetRepoName(c.Param("repo_id_or_owner") + "/" + c.Param("repo_name"))
|
||||
repo, err = _store.GetRepoName(c.Param("repo_id_or_owner")+"/"+c.Param("repo_name"), forgeID)
|
||||
} else {
|
||||
var repoID int64
|
||||
repoID, err = strconv.ParseInt(c.Param("repo_id_or_owner"), 10, 64)
|
||||
|
@ -612,7 +612,7 @@ func (c *Forgejo) getChangedFilesForPR(ctx context.Context, repo *model.Repo, in
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName, repo.ForgeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ func (c *Gitea) getChangedFilesForPR(ctx context.Context, repo *model.Repo, inde
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName, repo.ForgeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -656,7 +656,7 @@ func (c *Gitea) getTagCommitSHA(ctx context.Context, repo *model.Repo, tagName s
|
||||
return "", nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName, repo.ForgeID)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@ -635,7 +635,7 @@ func (c *client) loadChangedFilesFromPullRequest(ctx context.Context, pull *gith
|
||||
return pipeline, nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(tmpRepo.ForgeRemoteID, tmpRepo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(tmpRepo.ForgeRemoteID, tmpRepo.FullName, tmpRepo.ForgeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -673,7 +673,7 @@ func (c *client) getTagCommitSHA(ctx context.Context, repo *model.Repo, tagName
|
||||
return "", nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(repo.ForgeRemoteID, repo.FullName, repo.ForgeID)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"gitlab.com/gitlab-org/api/client-go"
|
||||
gitlab "gitlab.com/gitlab-org/api/client-go"
|
||||
"golang.org/x/oauth2"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server"
|
||||
@ -782,7 +782,7 @@ func (g *GitLab) loadChangedFilesFromMergeRequest(ctx context.Context, tmpRepo *
|
||||
return pipeline, nil
|
||||
}
|
||||
|
||||
repo, err := _store.GetRepoNameFallback(tmpRepo.ForgeRemoteID, tmpRepo.FullName)
|
||||
repo, err := _store.GetRepoNameFallback(tmpRepo.ForgeRemoteID, tmpRepo.FullName, tmpRepo.ForgeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ func SetRepo() gin.HandlerFunc {
|
||||
}
|
||||
repo, err = _store.GetRepo(repoID)
|
||||
} else {
|
||||
repo, err = _store.GetRepoName(fullName)
|
||||
repo, err = _store.GetRepoName(fullName, user.ForgeID)
|
||||
}
|
||||
|
||||
if repo != nil && err == nil {
|
||||
|
@ -51,7 +51,7 @@ func (s storage) permUpsert(sess *xorm.Session, perm *model.Perm) error {
|
||||
|
||||
// lookup repo based on name or forge ID if possible
|
||||
if perm.RepoID == 0 && perm.Repo != nil {
|
||||
r, err := s.getRepoNameFallback(sess, perm.Repo.ForgeRemoteID, perm.Repo.FullName)
|
||||
r, err := s.getRepoNameFallback(sess, perm.Repo.ForgeRemoteID, perm.Repo.FullName, perm.Repo.ForgeID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ import (
|
||||
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
||||
)
|
||||
|
||||
func (s storage) getRedirection(e *xorm.Session, fullName string) (*model.Redirection, error) {
|
||||
func (s storage) getRedirection(e *xorm.Session, fullName string, forgeID int64) (*model.Redirection, error) {
|
||||
repo := new(model.Redirection)
|
||||
return repo, wrapGet(e.Where("repo_full_name = ?", fullName).Get(repo))
|
||||
return repo, wrapGet(e.Where("repo_full_name = ?", fullName).And("forge_id = ?", forgeID).Get(repo))
|
||||
}
|
||||
|
||||
func (s storage) CreateRedirection(redirect *model.Redirection) error {
|
||||
|
@ -42,27 +42,27 @@ func (s storage) getRepoForgeID(e *xorm.Session, remoteID model.ForgeRemoteID) (
|
||||
return repo, wrapGet(e.Where("forge_remote_id = ?", remoteID).Get(repo))
|
||||
}
|
||||
|
||||
func (s storage) GetRepoNameFallback(remoteID model.ForgeRemoteID, fullName string) (*model.Repo, error) {
|
||||
func (s storage) GetRepoNameFallback(remoteID model.ForgeRemoteID, fullName string, forgeID int64) (*model.Repo, error) {
|
||||
sess := s.engine.NewSession()
|
||||
defer sess.Close()
|
||||
return s.getRepoNameFallback(sess, remoteID, fullName)
|
||||
return s.getRepoNameFallback(sess, remoteID, fullName, forgeID)
|
||||
}
|
||||
|
||||
func (s storage) getRepoNameFallback(e *xorm.Session, remoteID model.ForgeRemoteID, fullName string) (*model.Repo, error) {
|
||||
func (s storage) getRepoNameFallback(e *xorm.Session, remoteID model.ForgeRemoteID, fullName string, forgeID int64) (*model.Repo, error) {
|
||||
repo, err := s.getRepoForgeID(e, remoteID)
|
||||
if errors.Is(err, types.RecordNotExist) {
|
||||
return s.getRepoName(e, fullName)
|
||||
return s.getRepoName(e, fullName, forgeID)
|
||||
}
|
||||
return repo, err
|
||||
}
|
||||
|
||||
func (s storage) GetRepoName(fullName string) (*model.Repo, error) {
|
||||
func (s storage) GetRepoName(fullName string, forgeID int64) (*model.Repo, error) {
|
||||
sess := s.engine.NewSession()
|
||||
defer sess.Close()
|
||||
repo, err := s.getRepoName(sess, fullName)
|
||||
repo, err := s.getRepoName(sess, fullName, forgeID)
|
||||
if errors.Is(err, types.RecordNotExist) {
|
||||
// the repository does not exist, so look for a redirection
|
||||
redirect, err := s.getRedirection(sess, fullName)
|
||||
redirect, err := s.getRedirection(sess, fullName, forgeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -71,9 +71,9 @@ func (s storage) GetRepoName(fullName string) (*model.Repo, error) {
|
||||
return repo, err
|
||||
}
|
||||
|
||||
func (s storage) getRepoName(e *xorm.Session, fullName string) (*model.Repo, error) {
|
||||
func (s storage) getRepoName(e *xorm.Session, fullName string, forgeID int64) (*model.Repo, error) {
|
||||
repo := new(model.Repo)
|
||||
return repo, wrapGet(e.Where("LOWER(full_name) = ?", strings.ToLower(fullName)).Get(repo))
|
||||
return repo, wrapGet(e.Where("LOWER(full_name) = ?", strings.ToLower(fullName)).And("forge_id = ?", forgeID).Get(repo))
|
||||
}
|
||||
|
||||
func (s storage) GetRepoCount() (int64, error) {
|
||||
|
@ -101,10 +101,11 @@ func TestGetRepoName(t *testing.T) {
|
||||
FullName: "bradrydzewski/TEST",
|
||||
Owner: "bradrydzewski",
|
||||
Name: "TEST",
|
||||
ForgeID: 1,
|
||||
}
|
||||
|
||||
assert.NoError(t, store.CreateRepo(&repo))
|
||||
getrepo, err := store.GetRepoName(repo.FullName)
|
||||
getrepo, err := store.GetRepoName(repo.FullName, repo.ForgeID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, repo.ID, getrepo.ID)
|
||||
assert.Equal(t, repo.UserID, getrepo.UserID)
|
||||
@ -320,6 +321,7 @@ func TestRepoRedirection(t *testing.T) {
|
||||
FullName: "bradrydzewski/test",
|
||||
Owner: "bradrydzewski",
|
||||
Name: "test",
|
||||
ForgeID: 1,
|
||||
}
|
||||
assert.NoError(t, store.CreateRepo(&repo))
|
||||
|
||||
@ -338,7 +340,7 @@ func TestRepoRedirection(t *testing.T) {
|
||||
}))
|
||||
|
||||
// test redirection from old repo name
|
||||
repoFromStore, err := store.GetRepoNameFallback("1", "bradrydzewski/test")
|
||||
repoFromStore, err := store.GetRepoNameFallback("1", "bradrydzewski/test", repo.ForgeID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, repoFromStore.FullName, repoUpdated.FullName)
|
||||
|
||||
@ -351,7 +353,7 @@ func TestRepoRedirection(t *testing.T) {
|
||||
}
|
||||
assert.NoError(t, store.CreateRepo(&repo))
|
||||
|
||||
repoFromStore, err = store.GetRepoNameFallback("", "bradrydzewski/test-no-forge-id")
|
||||
repoFromStore, err = store.GetRepoNameFallback("", "bradrydzewski/test-no-forge-id", repo.ForgeID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, repoFromStore.FullName, repo.FullName)
|
||||
}
|
||||
|
@ -49,9 +49,9 @@ type Store interface {
|
||||
// GetRepoForgeID gets a repo by its forge ID.
|
||||
GetRepoForgeID(model.ForgeRemoteID) (*model.Repo, error)
|
||||
// GetRepoNameFallback gets the repo by its forge ID and if this doesn't exist by its full name.
|
||||
GetRepoNameFallback(remoteID model.ForgeRemoteID, fullName string) (*model.Repo, error)
|
||||
GetRepoNameFallback(remoteID model.ForgeRemoteID, fullName string, forgeID int64) (*model.Repo, error)
|
||||
// GetRepoName gets a repo by its full name.
|
||||
GetRepoName(string) (*model.Repo, error)
|
||||
GetRepoName(string, int64) (*model.Repo, error)
|
||||
// GetRepoCount gets a count of all repositories in the system.
|
||||
GetRepoCount() (int64, error)
|
||||
// CreateRepo creates a new repository.
|
||||
|
Loading…
x
Reference in New Issue
Block a user