You've already forked woodpecker
							
							
				mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-10-30 23:27:39 +02:00 
			
		
		
		
	Merge pull request #1677 from bradrydzewski/master
ability to flush user repo cache
This commit is contained in:
		
							
								
								
									
										5
									
								
								cache/cache.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								cache/cache.go
									
									
									
									
										vendored
									
									
								
							| @@ -12,6 +12,7 @@ import ( | ||||
| type Cache interface { | ||||
| 	Get(string) (interface{}, error) | ||||
| 	Set(string, interface{}) error | ||||
| 	Delete(string) error | ||||
| } | ||||
|  | ||||
| func Get(c context.Context, key string) (interface{}, error) { | ||||
| @@ -22,6 +23,10 @@ func Set(c context.Context, key string, value interface{}) error { | ||||
| 	return FromContext(c).Set(key, value) | ||||
| } | ||||
|  | ||||
| func Delete(c context.Context, key string) error { | ||||
| 	return FromContext(c).Delete(key) | ||||
| } | ||||
|  | ||||
| // Default creates an in-memory cache with the default | ||||
| // 30 minute expiration period. | ||||
| func Default() Cache { | ||||
|   | ||||
							
								
								
									
										9
									
								
								cache/helper.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								cache/helper.go
									
									
									
									
										vendored
									
									
								
							| @@ -52,3 +52,12 @@ func GetRepos(c context.Context, user *model.User) ([]*model.RepoLite, error) { | ||||
| 	Set(c, key, repos) | ||||
| 	return repos, nil | ||||
| } | ||||
|  | ||||
| // DeleteRepos evicts the cached user repositories from the cache associated | ||||
| // with the current context. | ||||
| func DeleteRepos(c context.Context, user *model.User) error { | ||||
| 	key := fmt.Sprintf("repos:%s", | ||||
| 		user.Login, | ||||
| 	) | ||||
| 	return Delete(c, key) | ||||
| } | ||||
|   | ||||
							
								
								
									
										15
									
								
								cache/helper_test.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								cache/helper_test.go
									
									
									
									
										vendored
									
									
								
							| @@ -84,6 +84,21 @@ func TestHelper(t *testing.T) { | ||||
| 			g.Assert(p == nil).IsTrue() | ||||
| 			g.Assert(err).Equal(fakeErr) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should evict repos", func() { | ||||
| 			key := fmt.Sprintf("repos:%s", | ||||
| 				fakeUser.Login, | ||||
| 			) | ||||
|  | ||||
| 			Set(c, key, fakeRepos) | ||||
| 			repos, err := Get(c, key) | ||||
| 			g.Assert(repos != nil).IsTrue() | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
|  | ||||
| 			DeleteRepos(c, fakeUser) | ||||
| 			repos, err = Get(c, key) | ||||
| 			g.Assert(repos == nil).IsTrue() | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -103,6 +103,7 @@ func Update(c *gin.Context) { | ||||
| 	job.Error = work.Job.Error | ||||
|  | ||||
| 	if build.Status == model.StatusPending { | ||||
| 		build.Started = work.Job.Started | ||||
| 		build.Status = model.StatusRunning | ||||
| 		store.UpdateBuild(c, build) | ||||
| 	} | ||||
|   | ||||
| @@ -3,7 +3,9 @@ package server | ||||
| import ( | ||||
| 	"encoding/base32" | ||||
| 	"net/http" | ||||
| 	"strconv" | ||||
|  | ||||
| 	log "github.com/Sirupsen/logrus" | ||||
| 	"github.com/gin-gonic/gin" | ||||
| 	"github.com/gorilla/securecookie" | ||||
|  | ||||
| @@ -33,7 +35,15 @@ func GetFeed(c *gin.Context) { | ||||
| } | ||||
|  | ||||
| func GetRepos(c *gin.Context) { | ||||
| 	repos, err := cache.GetRepos(c, session.User(c)) | ||||
| 	user := session.User(c) | ||||
|  | ||||
| 	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) | ||||
| 	if err != nil { | ||||
| 		c.String(500, "Error fetching repository list. %s", err) | ||||
| 		return | ||||
|   | ||||
		Reference in New Issue
	
	Block a user