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 | // swagger:model repo | ||||||
| type Repo struct { | type Repo struct { | ||||||
| 	ID          int64  `json:"id"                meddler:"repo_id,pk"` | 	ID          int64  `json:"id,omitempty"             meddler:"repo_id,pk"` | ||||||
| 	UserID      int64  `json:"-"                 meddler:"repo_user_id"` | 	UserID      int64  `json:"-"                        meddler:"repo_user_id"` | ||||||
| 	Owner       string `json:"owner"             meddler:"repo_owner"` | 	Owner       string `json:"owner"                    meddler:"repo_owner"` | ||||||
| 	Name        string `json:"name"              meddler:"repo_name"` | 	Name        string `json:"name"                     meddler:"repo_name"` | ||||||
| 	FullName    string `json:"full_name"         meddler:"repo_full_name"` | 	FullName    string `json:"full_name"                meddler:"repo_full_name"` | ||||||
| 	Avatar      string `json:"avatar_url"        meddler:"repo_avatar"` | 	Avatar      string `json:"avatar_url,omitempty"     meddler:"repo_avatar"` | ||||||
| 	Link        string `json:"link_url"          meddler:"repo_link"` | 	Link        string `json:"link_url,omitempty"       meddler:"repo_link"` | ||||||
| 	Kind        string `json:"scm"               meddler:"repo_scm"` | 	Kind        string `json:"scm,omitempty"            meddler:"repo_scm"` | ||||||
| 	Clone       string `json:"clone_url"         meddler:"repo_clone"` | 	Clone       string `json:"clone_url,omitempty"      meddler:"repo_clone"` | ||||||
| 	Branch      string `json:"default_branch"    meddler:"repo_branch"` | 	Branch      string `json:"default_branch,omitempty" meddler:"repo_branch"` | ||||||
| 	Timeout     int64  `json:"timeout"           meddler:"repo_timeout"` | 	Timeout     int64  `json:"timeout,omitempty"        meddler:"repo_timeout"` | ||||||
| 	IsPrivate   bool   `json:"private"           meddler:"repo_private"` | 	IsPrivate   bool   `json:"private,omitempty"        meddler:"repo_private"` | ||||||
| 	IsTrusted   bool   `json:"trusted"           meddler:"repo_trusted"` | 	IsTrusted   bool   `json:"trusted"                  meddler:"repo_trusted"` | ||||||
| 	IsStarred   bool   `json:"starred,omitempty" meddler:"-"` | 	IsStarred   bool   `json:"starred,omitempty"        meddler:"-"` | ||||||
| 	AllowPull   bool   `json:"allow_pr"          meddler:"repo_allow_pr"` | 	AllowPull   bool   `json:"allow_pr"                 meddler:"repo_allow_pr"` | ||||||
| 	AllowPush   bool   `json:"allow_push"        meddler:"repo_allow_push"` | 	AllowPush   bool   `json:"allow_push"               meddler:"repo_allow_push"` | ||||||
| 	AllowDeploy bool   `json:"allow_deploys"     meddler:"repo_allow_deploys"` | 	AllowDeploy bool   `json:"allow_deploys"            meddler:"repo_allow_deploys"` | ||||||
| 	AllowTag    bool   `json:"allow_tags"        meddler:"repo_allow_tags"` | 	AllowTag    bool   `json:"allow_tags"               meddler:"repo_allow_tags"` | ||||||
| 	Hash        string `json:"-"                 meddler:"repo_hash"` | 	Hash        string `json:"-"                        meddler:"repo_hash"` | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ import ( | |||||||
| 	"github.com/gorilla/securecookie" | 	"github.com/gorilla/securecookie" | ||||||
|  |  | ||||||
| 	"github.com/drone/drone/cache" | 	"github.com/drone/drone/cache" | ||||||
|  | 	"github.com/drone/drone/model" | ||||||
| 	"github.com/drone/drone/router/middleware/session" | 	"github.com/drone/drone/router/middleware/session" | ||||||
| 	"github.com/drone/drone/shared/token" | 	"github.com/drone/drone/shared/token" | ||||||
| 	"github.com/drone/drone/store" | 	"github.com/drone/drone/store" | ||||||
| @@ -35,26 +36,55 @@ func GetFeed(c *gin.Context) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func GetRepos(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 { | 	if flush { | ||||||
| 		log.Debugf("Evicting repository cache for user %s.", user.Login) | 		log.Debugf("Evicting repository cache for user %s.", user.Login) | ||||||
| 		cache.DeleteRepos(c, user) | 		cache.DeleteRepos(c, user) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	repos, err := cache.GetRepos(c, user) | 	remote, err := cache.GetRepos(c, user) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		c.String(500, "Error fetching repository list. %s", err) | 		c.String(500, "Error fetching repository list. %s", err) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	repos_, err := store.GetRepoListOf(c, repos) | 	repos, err := store.GetRepoListOf(c, remote) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		c.String(500, "Error fetching repository list. %s", err) | 		c.String(500, "Error fetching repository list. %s", err) | ||||||
| 		return | 		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) { | func GetRemoteRepos(c *gin.Context) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user