From 8d563d7820e7f8e71cc026e494aacbae254de37b Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Thu, 20 Nov 2025 04:47:58 +0000 Subject: [PATCH] appview/pipelines: add limit to pipelines query Signed-off-by: oppiliappan --- appview/db/pipeline.go | 6 ++++-- appview/pipelines/pipelines.go | 3 +++ appview/pulls/pulls.go | 2 ++ appview/repo/repo_util.go | 15 +-------------- 4 file(s) changed, 10 insertion(s)(+), 16 deletion(s)(-) diff --git a/appview/db/pipeline.go b/appview/db/pipeline.go --- a/appview/db/pipeline.go +++ b/appview/db/pipeline.go @@ -168,7 +168,7 @@ } // this is a mega query, but the most useful one: // get N pipelines, for each one get the latest status of its N workflows -func GetPipelineStatuses(e Execer, filters ...filter) ([]models.Pipeline, error) { +func GetPipelineStatuses(e Execer, limit int, filters ...filter) ([]models.Pipeline, error) { var conditions []string var args []any for _, filter := range filters { @@ -205,7 +205,9 @@ pipelines p join triggers t ON p.trigger_id = t.id %s - `, whereClause) + order by p.created desc + limit %d + `, whereClause, limit) rows, err := e.Query(query, args...) if err != nil { diff --git a/appview/pipelines/pipelines.go b/appview/pipelines/pipelines.go --- a/appview/pipelines/pipelines.go +++ b/appview/pipelines/pipelines.go @@ -82,6 +82,7 @@ repoInfo := f.RepoInfo(user) ps, err := db.GetPipelineStatuses( p.db, + 30, db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), @@ -124,6 +125,7 @@ } ps, err := db.GetPipelineStatuses( p.db, + 1, db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), @@ -193,6 +195,7 @@ } ps, err := db.GetPipelineStatuses( p.db, + 1, db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -178,6 +178,7 @@ } ps, err := db.GetPipelineStatuses( s.db, + len(shas), db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), @@ -648,6 +649,7 @@ repoInfo := f.RepoInfo(user) ps, err := db.GetPipelineStatuses( s.db, + len(shas), db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), diff --git a/appview/repo/repo_util.go b/appview/repo/repo_util.go --- a/appview/repo/repo_util.go +++ b/appview/repo/repo_util.go @@ -1,8 +1,6 @@ package repo import ( - "crypto/rand" - "math/big" "slices" "sort" "strings" @@ -90,18 +88,6 @@ return } -func randomString(n int) string { - const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - result := make([]byte, n) - - for i := 0; i < n; i++ { - n, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters)))) - result[i] = letters[n.Int64()] - } - - return string(result) -} - // grab pipelines from DB and munge that into a hashmap with commit sha as key // // golang is so blessed that it requires 35 lines of imperative code for this @@ -118,6 +104,7 @@ } ps, err := db.GetPipelineStatuses( d, + len(shas), db.FilterEq("repo_owner", repoInfo.OwnerDid), db.FilterEq("repo_name", repoInfo.Name), db.FilterEq("knot", repoInfo.Knot), -- tangled.sh