You've already forked woodpecker
							
							
				mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-10-30 23:27:39 +02:00 
			
		
		
		
	ability to pull full vs partial list
This commit is contained in:
		| @@ -11,23 +11,23 @@ type RepoLite struct { | ||||
| // | ||||
| // swagger:model repo | ||||
| type Repo struct { | ||||
| 	ID          int64  `json:"id"                meddler:"repo_id,pk"` | ||||
| 	UserID      int64  `json:"-"                 meddler:"repo_user_id"` | ||||
| 	Owner       string `json:"owner"             meddler:"repo_owner"` | ||||
| 	Name        string `json:"name"              meddler:"repo_name"` | ||||
| 	FullName    string `json:"full_name"         meddler:"repo_full_name"` | ||||
| 	Avatar      string `json:"avatar_url"        meddler:"repo_avatar"` | ||||
| 	Link        string `json:"link_url"          meddler:"repo_link"` | ||||
| 	Kind        string `json:"scm"               meddler:"repo_scm"` | ||||
| 	Clone       string `json:"clone_url"         meddler:"repo_clone"` | ||||
| 	Branch      string `json:"default_branch"    meddler:"repo_branch"` | ||||
| 	Timeout     int64  `json:"timeout"           meddler:"repo_timeout"` | ||||
| 	IsPrivate   bool   `json:"private"           meddler:"repo_private"` | ||||
| 	IsTrusted   bool   `json:"trusted"           meddler:"repo_trusted"` | ||||
| 	IsStarred   bool   `json:"starred,omitempty" meddler:"-"` | ||||
| 	AllowPull   bool   `json:"allow_pr"          meddler:"repo_allow_pr"` | ||||
| 	AllowPush   bool   `json:"allow_push"        meddler:"repo_allow_push"` | ||||
| 	AllowDeploy bool   `json:"allow_deploys"     meddler:"repo_allow_deploys"` | ||||
| 	AllowTag    bool   `json:"allow_tags"        meddler:"repo_allow_tags"` | ||||
| 	Hash        string `json:"-"                 meddler:"repo_hash"` | ||||
| 	ID          int64  `json:"id,omitempty"             meddler:"repo_id,pk"` | ||||
| 	UserID      int64  `json:"-"                        meddler:"repo_user_id"` | ||||
| 	Owner       string `json:"owner"                    meddler:"repo_owner"` | ||||
| 	Name        string `json:"name"                     meddler:"repo_name"` | ||||
| 	FullName    string `json:"full_name"                meddler:"repo_full_name"` | ||||
| 	Avatar      string `json:"avatar_url,omitempty"     meddler:"repo_avatar"` | ||||
| 	Link        string `json:"link_url,omitempty"       meddler:"repo_link"` | ||||
| 	Kind        string `json:"scm,omitempty"            meddler:"repo_scm"` | ||||
| 	Clone       string `json:"clone_url,omitempty"      meddler:"repo_clone"` | ||||
| 	Branch      string `json:"default_branch,omitempty" meddler:"repo_branch"` | ||||
| 	Timeout     int64  `json:"timeout,omitempty"        meddler:"repo_timeout"` | ||||
| 	IsPrivate   bool   `json:"private,omitempty"        meddler:"repo_private"` | ||||
| 	IsTrusted   bool   `json:"trusted"                  meddler:"repo_trusted"` | ||||
| 	IsStarred   bool   `json:"starred,omitempty"        meddler:"-"` | ||||
| 	AllowPull   bool   `json:"allow_pr"                 meddler:"repo_allow_pr"` | ||||
| 	AllowPush   bool   `json:"allow_push"               meddler:"repo_allow_push"` | ||||
| 	AllowDeploy bool   `json:"allow_deploys"            meddler:"repo_allow_deploys"` | ||||
| 	AllowTag    bool   `json:"allow_tags"               meddler:"repo_allow_tags"` | ||||
| 	Hash        string `json:"-"                        meddler:"repo_hash"` | ||||
| } | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import ( | ||||
| 	"github.com/gorilla/securecookie" | ||||
|  | ||||
| 	"github.com/drone/drone/cache" | ||||
| 	"github.com/drone/drone/model" | ||||
| 	"github.com/drone/drone/router/middleware/session" | ||||
| 	"github.com/drone/drone/shared/token" | ||||
| 	"github.com/drone/drone/store" | ||||
| @@ -35,26 +36,55 @@ func GetFeed(c *gin.Context) { | ||||
| } | ||||
|  | ||||
| func GetRepos(c *gin.Context) { | ||||
| 	user := session.User(c) | ||||
| 	var ( | ||||
| 		user     = session.User(c) | ||||
| 		all, _   = strconv.ParseBool(c.Query("all")) | ||||
| 		flush, _ = strconv.ParseBool(c.Query("flush")) | ||||
| 	) | ||||
|  | ||||
| 	flush, _ := strconv.ParseBool(c.Query("flush")) | ||||
| 	if flush { | ||||
| 		log.Debugf("Evicting repository cache for user %s.", user.Login) | ||||
| 		cache.DeleteRepos(c, user) | ||||
| 	} | ||||
|  | ||||
| 	repos, err := cache.GetRepos(c, user) | ||||
| 	remote, err := cache.GetRepos(c, user) | ||||
| 	if err != nil { | ||||
| 		c.String(500, "Error fetching repository list. %s", err) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	repos_, err := store.GetRepoListOf(c, repos) | ||||
| 	repos, err := store.GetRepoListOf(c, remote) | ||||
| 	if err != nil { | ||||
| 		c.String(500, "Error fetching repository list. %s", err) | ||||
| 		return | ||||
| 	} | ||||
| 	c.JSON(http.StatusOK, repos_) | ||||
|  | ||||
| 	if !all { | ||||
| 		c.JSON(http.StatusOK, repos) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// below we combine the two lists to include both active and inactive | ||||
| 	// repositories. This is displayed on the settings screen to enable | ||||
| 	// toggling on / off repository settings. | ||||
|  | ||||
| 	repom := map[string]bool{} | ||||
| 	for _, repo := range repos { | ||||
| 		repom[repo.FullName] = true | ||||
| 	} | ||||
|  | ||||
| 	for _, repo := range remote { | ||||
| 		if repom[repo.FullName] { | ||||
| 			continue | ||||
| 		} | ||||
| 		repos = append(repos, &model.Repo{ | ||||
| 			Avatar:   repo.Avatar, | ||||
| 			FullName: repo.FullName, | ||||
| 			Owner:    repo.Owner, | ||||
| 			Name:     repo.Name, | ||||
| 		}) | ||||
| 	} | ||||
| 	c.JSON(http.StatusOK, repos) | ||||
| } | ||||
|  | ||||
| func GetRemoteRepos(c *gin.Context) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user