Signed-off-by: Evan Jarrett evan@evanjarrett.com
REVERTED
appview/db/pipeline.go
REVERTED
appview/db/pipeline.go
···
168
169
// this is a mega query, but the most useful one:
170
// get N pipelines, for each one get the latest status of its N workflows
171
-
func GetPipelineStatuses(e Execer, filters ...filter) ([]models.Pipeline, error) {
172
var conditions []string
173
var args []any
174
for _, filter := range filters {
···
205
join
206
triggers t ON p.trigger_id = t.id
207
%s
208
-
`, whereClause)
209
210
rows, err := e.Query(query, args...)
211
if err != nil {
···
168
169
// this is a mega query, but the most useful one:
170
// get N pipelines, for each one get the latest status of its N workflows
171
+
func GetPipelineStatuses(e Execer, limit int, filters ...filter) ([]models.Pipeline, error) {
172
var conditions []string
173
var args []any
174
for _, filter := range filters {
···
205
join
206
triggers t ON p.trigger_id = t.id
207
%s
208
+
order by p.created desc
209
+
limit %d
210
+
`, whereClause, limit)
211
212
rows, err := e.Query(query, args...)
213
if err != nil {
REVERTED
appview/pages/templates/repo/compare/compare.html
REVERTED
appview/pages/templates/repo/compare/compare.html
REVERTED
appview/pages/templates/repo/settings/general.html
REVERTED
appview/pages/templates/repo/settings/general.html
REVERTED
appview/pages/templates/user/fragments/editBio.html
REVERTED
appview/pages/templates/user/fragments/editBio.html
REVERTED
appview/pipelines/pipelines.go
REVERTED
appview/pipelines/pipelines.go
···
82
83
ps, err := db.GetPipelineStatuses(
84
p.db,
85
db.FilterEq("repo_owner", repoInfo.OwnerDid),
86
db.FilterEq("repo_name", repoInfo.Name),
87
db.FilterEq("knot", repoInfo.Knot),
···
124
125
ps, err := db.GetPipelineStatuses(
126
p.db,
127
db.FilterEq("repo_owner", repoInfo.OwnerDid),
128
db.FilterEq("repo_name", repoInfo.Name),
129
db.FilterEq("knot", repoInfo.Knot),
···
193
194
ps, err := db.GetPipelineStatuses(
195
p.db,
196
db.FilterEq("repo_owner", repoInfo.OwnerDid),
197
db.FilterEq("repo_name", repoInfo.Name),
198
db.FilterEq("knot", repoInfo.Knot),
···
82
83
ps, err := db.GetPipelineStatuses(
84
p.db,
85
+
30,
86
db.FilterEq("repo_owner", repoInfo.OwnerDid),
87
db.FilterEq("repo_name", repoInfo.Name),
88
db.FilterEq("knot", repoInfo.Knot),
···
125
126
ps, err := db.GetPipelineStatuses(
127
p.db,
128
+
1,
129
db.FilterEq("repo_owner", repoInfo.OwnerDid),
130
db.FilterEq("repo_name", repoInfo.Name),
131
db.FilterEq("knot", repoInfo.Knot),
···
195
196
ps, err := db.GetPipelineStatuses(
197
p.db,
198
+
1,
199
db.FilterEq("repo_owner", repoInfo.OwnerDid),
200
db.FilterEq("repo_name", repoInfo.Name),
201
db.FilterEq("knot", repoInfo.Knot),
REVERTED
appview/pulls/pulls.go
REVERTED
appview/pulls/pulls.go
···
178
179
ps, err := db.GetPipelineStatuses(
180
s.db,
181
db.FilterEq("repo_owner", repoInfo.OwnerDid),
182
db.FilterEq("repo_name", repoInfo.Name),
183
db.FilterEq("knot", repoInfo.Knot),
···
648
repoInfo := f.RepoInfo(user)
649
ps, err := db.GetPipelineStatuses(
650
s.db,
651
db.FilterEq("repo_owner", repoInfo.OwnerDid),
652
db.FilterEq("repo_name", repoInfo.Name),
653
db.FilterEq("knot", repoInfo.Knot),
···
178
179
ps, err := db.GetPipelineStatuses(
180
s.db,
181
+
len(shas),
182
db.FilterEq("repo_owner", repoInfo.OwnerDid),
183
db.FilterEq("repo_name", repoInfo.Name),
184
db.FilterEq("knot", repoInfo.Knot),
···
649
repoInfo := f.RepoInfo(user)
650
ps, err := db.GetPipelineStatuses(
651
s.db,
652
+
len(shas),
653
db.FilterEq("repo_owner", repoInfo.OwnerDid),
654
db.FilterEq("repo_name", repoInfo.Name),
655
db.FilterEq("knot", repoInfo.Knot),
REVERTED
appview/repo/compare.go
REVERTED
appview/repo/compare.go
···
116
}
117
118
// if user is navigating to one of
119
// /compare/{base}/{head}
120
-
// /compare/{base}...{head}
121
-
base := chi.URLParam(r, "base")
122
-
head := chi.URLParam(r, "head")
123
-
if base == "" && head == "" {
124
-
rest := chi.URLParam(r, "*") // master...feature/xyz
125
-
parts := strings.SplitN(rest, "...", 2)
126
-
if len(parts) == 2 {
127
-
base = parts[0]
128
-
head = parts[1]
129
-
}
130
}
131
132
base, _ = url.PathUnescape(base)
···
116
}
117
118
// if user is navigating to one of
119
+
// /compare/{base}...{head}
120
// /compare/{base}/{head}
121
+
var base, head string
122
+
rest := chi.URLParam(r, "*")
123
+
124
+
var parts []string
125
+
if strings.Contains(rest, "...") {
126
+
parts = strings.SplitN(rest, "...", 2)
127
+
} else if strings.Contains(rest, "/") {
128
+
parts = strings.SplitN(rest, "/", 2)
129
+
}
130
+
131
+
if len(parts) == 2 {
132
+
base = parts[0]
133
+
head = parts[1]
134
}
135
136
base, _ = url.PathUnescape(base)
REVERTED
appview/repo/repo_util.go
REVERTED
appview/repo/repo_util.go
···
1
package repo
2
3
import (
4
-
"crypto/rand"
5
-
"math/big"
6
"slices"
7
"sort"
8
"strings"
···
90
return
91
}
92
93
-
func randomString(n int) string {
94
-
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
95
-
result := make([]byte, n)
96
-
97
-
for i := 0; i < n; i++ {
98
-
n, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
99
-
result[i] = letters[n.Int64()]
100
-
}
101
-
102
-
return string(result)
103
-
}
104
-
105
// grab pipelines from DB and munge that into a hashmap with commit sha as key
106
//
107
// golang is so blessed that it requires 35 lines of imperative code for this
···
118
119
ps, err := db.GetPipelineStatuses(
120
d,
121
db.FilterEq("repo_owner", repoInfo.OwnerDid),
122
db.FilterEq("repo_name", repoInfo.Name),
123
db.FilterEq("knot", repoInfo.Knot),
···
1
package repo
2
3
import (
4
"slices"
5
"sort"
6
"strings"
···
88
return
89
}
90
91
// grab pipelines from DB and munge that into a hashmap with commit sha as key
92
//
93
// golang is so blessed that it requires 35 lines of imperative code for this
···
104
105
ps, err := db.GetPipelineStatuses(
106
d,
107
+
len(shas),
108
db.FilterEq("repo_owner", repoInfo.OwnerDid),
109
db.FilterEq("repo_name", repoInfo.Name),
110
db.FilterEq("knot", repoInfo.Knot),
REVERTED
appview/repo/router.go
REVERTED
appview/repo/router.go
REVERTED
nix/pkgs/knot-unwrapped.nix
REVERTED
nix/pkgs/knot-unwrapped.nix
ERROR
spindle/engines/nixery/engine.go
ERROR
spindle/engines/nixery/engine.go
Failed to calculate interdiff for this file.
ERROR
spindle/engines/nixery/setup_steps.go
ERROR
spindle/engines/nixery/setup_steps.go
Failed to calculate interdiff for this file.
ERROR
spindle/models/clone.go
ERROR
spindle/models/clone.go
Failed to calculate interdiff for this file.
ERROR
spindle/models/clone_test.go
ERROR
spindle/models/clone_test.go
Failed to calculate interdiff for this file.