Skip to content

Commit cdba451

Browse files
author
Thomas Osterbind
committed
fix: updated pagination to rely on core struct
- first pass complete - Limit and Offset ListParams obtained by api/handlers' List functions/methods using `ListParamsFromRequest()` - `params_test.go` added, handles a few cases of invalid limits and offsets - partially complete - added support for accepting an 'orderBy' request query param just now but have not yet updated core/params_test and api/handlers functions to use this value yet
1 parent 2eadc89 commit cdba451

File tree

8 files changed

+148
-368
lines changed

8 files changed

+148
-368
lines changed

api/handlers/datasets.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,22 @@ func (h *DatasetHandlers) ZipDatasetHandler(w http.ResponseWriter, r *http.Reque
102102
}
103103

104104
func (h *DatasetHandlers) listDatasetsHandler(w http.ResponseWriter, r *http.Request) {
105-
p := util.PageFromRequest(r)
105+
lp := core.ListParamsFromRequest(r)
106106
res := []*repo.DatasetRef{}
107107
args := &core.ListParams{
108-
Limit: p.Limit(),
109-
Offset: p.Offset(),
110-
OrderBy: "created",
108+
Limit: lp.Limit,
109+
Offset: lp.Offset,
110+
OrderBy: "created", //TODO: should there be a global default orderby?
111111
}
112112
if err := h.List(args, &res); err != nil {
113113
h.log.Infof("error listing datasets: %s", err.Error())
114114
util.WriteErrResponse(w, http.StatusInternalServerError, err)
115115
return
116116
}
117-
118-
if err := util.WritePageResponse(w, res, r, p); err != nil {
117+
// TODO: need to update util.WritePageResponse to take a
118+
// core.ListParams rather than a util.Page struct
119+
// for time being I added an empty util.Page struct
120+
if err := util.WritePageResponse(w, res, r, util.Page{}); err != nil {
119121
h.log.Infof("error list datasests response: %s", err.Error())
120122
}
121123
}
@@ -225,7 +227,8 @@ func (h *DatasetHandlers) deleteDatasetHandler(w http.ResponseWriter, r *http.Re
225227
}
226228

227229
func (h *DatasetHandlers) getStructuredDataHandler(w http.ResponseWriter, r *http.Request) {
228-
page := util.PageFromRequest(r)
230+
//page := util.PageFromRequest(r)
231+
listParams := core.ListParamsFromRequest(r)
229232

230233
all, err := util.ReqParamBool("all", r)
231234
if err != nil {
@@ -241,8 +244,8 @@ func (h *DatasetHandlers) getStructuredDataHandler(w http.ResponseWriter, r *htt
241244
Format: dataset.JsonDataFormat,
242245
Path: datastore.NewKey(r.URL.Path[len("/data"):]),
243246
Objects: objectRows,
244-
Limit: page.Limit(),
245-
Offset: page.Offset(),
247+
Limit: listParams.Limit,
248+
Offset: listParams.Offset,
246249
All: all,
247250
}
248251
data := &core.StructuredData{}

api/handlers/peers.go

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,25 +81,30 @@ func (d *PeerHandlers) ConnectionsHandler(w http.ResponseWriter, r *http.Request
8181
}
8282

8383
func (h *PeerHandlers) listPeersHandler(w http.ResponseWriter, r *http.Request) {
84-
p := util.PageFromRequest(r)
84+
//p := util.PageFromRequest(r)
85+
lp := core.ListParamsFromRequest(r)
8586
res := []*profile.Profile{}
8687
args := &core.ListParams{
87-
Limit: p.Limit(),
88-
Offset: p.Offset(),
89-
OrderBy: "created",
88+
Limit: lp.Limit,
89+
Offset: lp.Offset,
90+
OrderBy: "created", //TODO: should there be a global default for OrderBy?
9091
}
9192
if err := h.List(args, &res); err != nil {
9293
h.log.Infof("list peers: %s", err.Error())
9394
util.WriteErrResponse(w, http.StatusInternalServerError, err)
9495
return
9596
}
96-
util.WritePageResponse(w, res, r, p)
97+
// TODO: need to update util.WritePageResponse to take a
98+
// core.ListParams rather than a util.Page struct
99+
// for time being I added an empty util.Page struct
100+
util.WritePageResponse(w, res, r, util.Page{})
97101
}
98102

99103
func (h *PeerHandlers) listConnectionsHandler(w http.ResponseWriter, r *http.Request) {
100-
limit := 0
104+
//limit := 0
105+
listParams := core.ListParamsFromRequest(r)
101106
peers := []string{}
102-
if err := h.ConnectedPeers(&limit, &peers); err != nil {
107+
if err := h.ConnectedPeers(&listParams.Limit, &peers); err != nil {
103108
h.log.Infof("error showing connected peers: %s", err.Error())
104109
util.WriteErrResponse(w, http.StatusInternalServerError, err)
105110
return
@@ -142,11 +147,12 @@ func (h *PeerHandlers) getPeerHandler(w http.ResponseWriter, r *http.Request) {
142147
}
143148

144149
func (h *PeerHandlers) peerNamespaceHandler(w http.ResponseWriter, r *http.Request) {
145-
page := util.PageFromRequest(r)
150+
//page := util.PageFromRequest(r)
151+
listParams := core.ListParamsFromRequest(r)
146152
args := &core.NamespaceParams{
147153
PeerId: r.URL.Path[len("/peernamespace/"):],
148-
Limit: page.Limit(),
149-
Offset: page.Offset(),
154+
Limit: listParams.Limit,
155+
Offset: listParams.Offset,
150156
}
151157
res := []*repo.DatasetRef{}
152158
if err := h.GetNamespace(args, &res); err != nil {

api/handlers/queries.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,13 @@ func (d *QueryHandlers) ListHandler(w http.ResponseWriter, r *http.Request) {
6060
// }
6161

6262
func (h *QueryHandlers) listQueriesHandler(w http.ResponseWriter, r *http.Request) {
63-
p := util.PageFromRequest(r)
63+
//p := util.PageFromRequest(r)
64+
lp := core.ListParamsFromRequest(r)
6465
res := []*repo.DatasetRef{}
6566
args := &core.ListParams{
66-
Limit: p.Limit(),
67-
Offset: p.Offset(),
68-
OrderBy: "created",
67+
Limit: lp.Limit,
68+
Offset: lp.Offset,
69+
OrderBy: "created", //TODO: should there be a global default for OrderBy?
6970
}
7071
err := h.List(args, &res)
7172
if err != nil {

core/c.out

Lines changed: 0 additions & 171 deletions
This file was deleted.

0 commit comments

Comments
 (0)