Close: #277 Signed-off-by: Seongmin Lee git@boltless.me
+17
appview/db/issues.go
+17
appview/db/issues.go
···
246
246
return issues, nil
247
247
}
248
248
249
+
func GetIssue(e Execer, repoAt syntax.ATURI, issueId int) (*models.Issue, error) {
250
+
issues, err := GetIssuesPaginated(
251
+
e,
252
+
pagination.Page{},
253
+
FilterEq("repo_at", repoAt),
254
+
FilterEq("issue_id", issueId),
255
+
)
256
+
if err != nil {
257
+
return nil, err
258
+
}
259
+
if len(issues) != 1 {
260
+
return nil, sql.ErrNoRows
261
+
}
262
+
263
+
return &issues[0], nil
264
+
}
265
+
249
266
func GetIssues(e Execer, filters ...filter) ([]models.Issue, error) {
250
267
return GetIssuesPaginated(e, pagination.Page{}, filters...)
251
268
}
+6
-13
appview/middleware/middleware.go
+6
-13
appview/middleware/middleware.go
···
244
244
prId := chi.URLParam(r, "pull")
245
245
prIdInt, err := strconv.Atoi(prId)
246
246
if err != nil {
247
-
http.Error(w, "bad pr id", http.StatusBadRequest)
248
247
log.Println("failed to parse pr id", err)
248
+
mw.pages.Error404(w)
249
249
return
250
250
}
251
251
252
252
pr, err := db.GetPull(mw.db, f.RepoAt(), prIdInt)
253
253
if err != nil {
254
254
log.Println("failed to get pull and comments", err)
255
+
mw.pages.Error404(w)
255
256
return
256
257
}
257
258
···
292
293
issueId, err := strconv.Atoi(issueIdStr)
293
294
if err != nil {
294
295
log.Println("failed to fully resolve issue ID", err)
295
-
mw.pages.ErrorKnot404(w)
296
+
mw.pages.Error404(w)
296
297
return
297
298
}
298
299
299
-
issues, err := db.GetIssues(
300
-
mw.db,
301
-
db.FilterEq("repo_at", f.RepoAt()),
302
-
db.FilterEq("issue_id", issueId),
303
-
)
300
+
issue, err := db.GetIssue(mw.db, f.RepoAt(), issueId)
304
301
if err != nil {
305
302
log.Println("failed to get issues", "err", err)
303
+
mw.pages.Error404(w)
306
304
return
307
305
}
308
-
if len(issues) != 1 {
309
-
log.Println("got incorrect number of issues", "len(issuse)", len(issues))
310
-
return
311
-
}
312
-
issue := issues[0]
313
306
314
-
ctx := context.WithValue(r.Context(), "issue", &issue)
307
+
ctx := context.WithValue(r.Context(), "issue", issue)
315
308
next.ServeHTTP(w, r.WithContext(ctx))
316
309
})
317
310
}