@@ -7,15 +7,15 @@ package api
77import (
88 "fmt"
99 "net/http"
10-
11- "github.com/go-vela/server/router/middleware/org"
12- "github.com/go-vela/server/router/middleware/user"
10+ "strconv"
1311
1412 "github.com/go-vela/server/database"
1513 "github.com/go-vela/server/router/middleware/build"
14+ "github.com/go-vela/server/router/middleware/org"
1615 "github.com/go-vela/server/router/middleware/repo"
1716 "github.com/go-vela/server/router/middleware/service"
1817 "github.com/go-vela/server/router/middleware/step"
18+ "github.com/go-vela/server/router/middleware/user"
1919 "github.com/go-vela/server/util"
2020
2121 "github.com/go-vela/types/library"
@@ -47,6 +47,17 @@ import (
4747// description: Build number
4848// required: true
4949// type: integer
50+ // - in: query
51+ // name: page
52+ // description: The page of results to retrieve
53+ // type: integer
54+ // default: 1
55+ // - in: query
56+ // name: per_page
57+ // description: How many results per page to return
58+ // type: integer
59+ // maximum: 100
60+ // default: 10
5061// security:
5162// - ApiKeyAuth: []
5263// responses:
@@ -82,10 +93,30 @@ func GetBuildLogs(c *gin.Context) {
8293 "user" : u .GetName (),
8394 }).Infof ("reading logs for build %s" , entry )
8495
96+ // capture page query parameter if present
97+ page , err := strconv .Atoi (c .DefaultQuery ("page" , "1" ))
98+ if err != nil {
99+ //nolint:lll // ignore long line length due to error message
100+ retErr := fmt .Errorf ("unable to convert page query parameter for build %s: %w" , entry , err )
101+ util .HandleError (c , http .StatusBadRequest , retErr )
102+
103+ return
104+ }
105+
106+ // capture per_page query parameter if present
107+ perPage , err := strconv .Atoi (c .DefaultQuery ("per_page" , "10" ))
108+ if err != nil {
109+ retErr := fmt .Errorf ("unable to convert per_page query parameter for build %s: %w" , entry , err )
110+ util .HandleError (c , http .StatusBadRequest , retErr )
111+
112+ return
113+ }
114+
115+ // ensure per_page isn't above or below allowed values
116+ perPage = util .MaxInt (1 , util .MinInt (100 , perPage ))
117+
85118 // send API call to capture the list of logs for the build
86- //
87- // TODO: add page and per_page query parameters
88- l , t , err := database .FromContext (c ).ListLogsForBuild (b , 1 , 100 )
119+ l , t , err := database .FromContext (c ).ListLogsForBuild (b , page , perPage )
89120 if err != nil {
90121 retErr := fmt .Errorf ("unable to get logs for build %s: %w" , entry , err )
91122
@@ -96,8 +127,8 @@ func GetBuildLogs(c *gin.Context) {
96127
97128 // create pagination object
98129 pagination := Pagination {
99- Page : 1 ,
100- PerPage : 100 ,
130+ Page : page ,
131+ PerPage : perPage ,
101132 Total : t ,
102133 }
103134 // set pagination headers
0 commit comments