Skip to content

Commit 0154a57

Browse files
committed
refactor: remove use of a custom pagination structure
1 parent 730a2b3 commit 0154a57

19 files changed

+109
-111
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* refactor: replace `errgo` with `github.com/Scalingo/go-utils/errors/v3` (breaking change)
88
* feat(logs): `LogsURL` returns a parsed structure (breaking change)
99
* refactor: autofix by `go fix` and `golangci-lint`
10+
* refactor: remove use of a custom pagination structure
1011

1112
## 9.2.0
1213

databases.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
httpclient "github.com/Scalingo/go-scalingo/v9/http"
99
"github.com/Scalingo/go-utils/errors/v3"
10+
"github.com/Scalingo/go-utils/pagination"
1011
)
1112

1213
// DatabasesService is the interface gathering all the methods related to
@@ -17,7 +18,7 @@ type DatabasesService interface {
1718
DatabaseDisableFeature(ctx context.Context, app, addonID, feature string) (DatabaseDisableFeatureResponse, error)
1819
DatabaseUpdatePeriodicBackupsConfig(ctx context.Context, app, addonID string, params DatabaseUpdatePeriodicBackupsConfigParams) (Database, error)
1920
DatabaseUpdateMaintenanceWindow(ctx context.Context, app, addonID string, params MaintenanceWindowParams) (Database, error)
20-
DatabaseListMaintenance(ctx context.Context, app, addonID string, opts PaginationOpts) ([]*Maintenance, PaginationMeta, error)
21+
DatabaseListMaintenance(ctx context.Context, app, addonID string, paginationReq pagination.Request) ([]*Maintenance, pagination.Meta, error)
2122
DatabaseShowMaintenance(ctx context.Context, app, addonID, maintenanceID string) (Maintenance, error)
2223
}
2324

deployments.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import (
1111

1212
httpclient "github.com/Scalingo/go-scalingo/v9/http"
1313
"github.com/Scalingo/go-utils/errors/v3"
14+
"github.com/Scalingo/go-utils/pagination"
1415
)
1516

1617
type DeploymentsService interface {
1718
DeploymentList(ctx context.Context, app string) ([]*Deployment, error)
18-
DeploymentListWithPagination(ctx context.Context, app string, opts PaginationOpts) ([]*Deployment, PaginationMeta, error)
19+
DeploymentListWithPagination(ctx context.Context, app string, paginationReq pagination.Request) ([]*Deployment, pagination.Meta, error)
1920
Deployment(ctx context.Context, app string, deploy string) (*Deployment, error)
2021
DeploymentLogs(ctx context.Context, deployURL string) (*http.Response, error)
2122
DeploymentStream(ctx context.Context, deployURL string) (*websocket.Conn, error)
@@ -119,7 +120,7 @@ func IsFinishedString(status DeploymentStatus) bool {
119120
type DeploymentList struct {
120121
Deployments []*Deployment `json:"deployments"`
121122
Meta struct {
122-
PaginationMeta PaginationMeta `json:"pagination"`
123+
Pagination pagination.Meta `json:"pagination"`
123124
}
124125
}
125126

@@ -149,14 +150,14 @@ func (c *Client) DeploymentList(ctx context.Context, app string) ([]*Deployment,
149150
return deployments.Deployments, nil
150151
}
151152

152-
func (c *Client) DeploymentListWithPagination(ctx context.Context, app string, opts PaginationOpts) ([]*Deployment, PaginationMeta, error) {
153+
func (c *Client) DeploymentListWithPagination(ctx context.Context, app string, paginationReq pagination.Request) ([]*Deployment, pagination.Meta, error) {
153154
var deployments DeploymentList
154-
err := c.ScalingoAPI().SubresourceList(ctx, "apps", app, "deployments", opts.ToMap(), &deployments)
155+
err := c.ScalingoAPI().SubresourceList(ctx, "apps", app, "deployments", paginationRequestToMap(paginationReq), &deployments)
155156
if err != nil {
156-
return []*Deployment{}, PaginationMeta{}, errors.Wrap(ctx, err, "list the deployments with pagination")
157+
return []*Deployment{}, pagination.Meta{}, errors.Wrap(ctx, err, "list the deployments with pagination")
157158
}
158159

159-
return deployments.Deployments, deployments.Meta.PaginationMeta, nil
160+
return deployments.Deployments, deployments.Meta.Pagination, nil
160161
}
161162

162163
func (c *Client) Deployment(ctx context.Context, app string, deploy string) (*Deployment, error) {

events.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,58 +9,59 @@ import (
99

1010
"github.com/Scalingo/go-scalingo/v9/http"
1111
"github.com/Scalingo/go-utils/errors/v3"
12+
"github.com/Scalingo/go-utils/pagination"
1213
)
1314

1415
type EventsService interface {
1516
EventTypesList(context.Context) ([]EventType, error)
1617
EventCategoriesList(context.Context) ([]EventCategory, error)
17-
EventsList(ctx context.Context, app string, opts PaginationOpts) (Events, PaginationMeta, error)
18-
UserEventsList(context.Context, PaginationOpts) (Events, PaginationMeta, error)
18+
EventsList(ctx context.Context, app string, paginationReq pagination.Request) (Events, pagination.Meta, error)
19+
UserEventsList(ctx context.Context, paginationReq pagination.Request) (Events, pagination.Meta, error)
1920
}
2021

2122
var _ EventsService = (*Client)(nil)
2223

2324
type EventsRes struct {
2425
Events []*Event `json:"events"`
2526
Meta struct {
26-
PaginationMeta PaginationMeta `json:"pagination"`
27+
Pagination pagination.Meta `json:"pagination"`
2728
}
2829
}
2930

30-
func (c *Client) EventsList(ctx context.Context, app string, opts PaginationOpts) (Events, PaginationMeta, error) {
31+
func (c *Client) EventsList(ctx context.Context, app string, paginationReq pagination.Request) (Events, pagination.Meta, error) {
3132
var eventsRes EventsRes
32-
err := c.ScalingoAPI().SubresourceList(ctx, "apps", app, "events", opts.ToMap(), &eventsRes)
33+
err := c.ScalingoAPI().SubresourceList(ctx, "apps", app, "events", paginationRequestToMap(paginationReq), &eventsRes)
3334
if err != nil {
34-
return nil, PaginationMeta{}, errors.Wrap(ctx, err, "list app events")
35+
return nil, pagination.Meta{}, errors.Wrap(ctx, err, "list app events")
3536
}
3637
var events Events
3738
for _, ev := range eventsRes.Events {
3839
events = append(events, ev.Specialize())
3940
}
40-
return events, eventsRes.Meta.PaginationMeta, nil
41+
return events, eventsRes.Meta.Pagination, nil
4142
}
4243

43-
func (c *Client) UserEventsList(ctx context.Context, opts PaginationOpts) (Events, PaginationMeta, error) {
44+
func (c *Client) UserEventsList(ctx context.Context, paginationReq pagination.Request) (Events, pagination.Meta, error) {
4445
req := &http.APIRequest{
4546
Endpoint: "/events",
46-
Params: opts.ToMap(),
47+
Params: paginationRequestToMap(paginationReq),
4748
}
4849

4950
var eventsRes EventsRes
5051
res, err := c.ScalingoAPI().Do(ctx, req)
5152
if err != nil {
52-
return nil, PaginationMeta{}, errors.Wrap(ctx, err, "list user events")
53+
return nil, pagination.Meta{}, errors.Wrap(ctx, err, "list user events")
5354
}
5455
defer res.Body.Close()
5556

5657
err = json.NewDecoder(res.Body).Decode(&eventsRes)
5758
if err != nil {
58-
return nil, PaginationMeta{}, errors.Wrap(ctx, err, "decode user events response")
59+
return nil, pagination.Meta{}, errors.Wrap(ctx, err, "decode user events response")
5960
}
6061

6162
var events Events
6263
for _, ev := range eventsRes.Events {
6364
events = append(events, ev.Specialize())
6465
}
65-
return events, eventsRes.Meta.PaginationMeta, nil
66+
return events, eventsRes.Meta.Pagination, nil
6667
}

events_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ import (
99
"github.com/stretchr/testify/require"
1010

1111
"github.com/Scalingo/go-scalingo/v9/http/httpmock"
12+
"github.com/Scalingo/go-utils/pagination"
1213
)
1314

1415
var eventsListCases = map[string]struct {
15-
PaginationOpts PaginationOpts
16-
App string
17-
Body string
18-
Code int
19-
EventsCount int
20-
Error error
16+
PaginationReq pagination.Request
17+
App string
18+
Body string
19+
Code int
20+
EventsCount int
21+
Error error
2122
}{
2223
"test get list of events with no event": {
2324
App: "app-1",
@@ -48,12 +49,12 @@ func TestEventsList(t *testing.T) {
4849
apiMock := httpmock.NewMockClient(ctrl)
4950
client.apiClient = apiMock
5051

51-
apiMock.EXPECT().SubresourceList(gomock.Any(), "apps", c.App, "events", c.PaginationOpts.ToMap(), gomock.Any()).Do(func(_ context.Context, _, _, _ string, _ any, res any) {
52+
apiMock.EXPECT().SubresourceList(gomock.Any(), "apps", c.App, "events", paginationRequestToMap(c.PaginationReq), gomock.Any()).Do(func(_ context.Context, _, _, _ string, _ any, res any) {
5253
err := json.Unmarshal([]byte(c.Body), &res)
5354
require.NoError(t, err)
5455
}).Return(nil)
5556

56-
events, _, err := client.EventsList(ctx, c.App, c.PaginationOpts)
57+
events, _, err := client.EventsList(ctx, c.App, c.PaginationReq)
5758
if len(events) != c.EventsCount {
5859
t.Errorf("expected %d event, got %v", c.EventsCount, len(events))
5960
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.24.0
44

55
require (
66
github.com/Scalingo/go-utils/errors/v3 v3.2.0
7-
github.com/Scalingo/go-utils/pagination v1.1.2
7+
github.com/Scalingo/go-utils/pagination v1.1.3-0.20260303075303-b0b0c6e4005d
88
github.com/golang-jwt/jwt/v5 v5.3.1
99
github.com/golang/mock v1.6.0
1010
github.com/gorilla/websocket v1.5.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
github.com/Scalingo/go-utils/errors/v3 v3.2.0 h1:Ks+v2oRwv3VZfe+xVB+kpfmZouXHVCPHHtwL5W60prc=
22
github.com/Scalingo/go-utils/errors/v3 v3.2.0/go.mod h1:jVVNoOdYFjuNkR/BeEZWNWJVvu4jmyLY4udlsQQyBss=
3-
github.com/Scalingo/go-utils/pagination v1.1.2 h1:DfHxWXK76F6+UyJqmJ/XIxTuwurMIJHRFfiejmPBC+8=
4-
github.com/Scalingo/go-utils/pagination v1.1.2/go.mod h1:MwT1RRecXktFgVNeib+B4dnM4r0cPc93JichOPs5tj0=
3+
github.com/Scalingo/go-utils/pagination v1.1.3-0.20260303075303-b0b0c6e4005d h1:iFRZD8jYT4AdOAtjEEZMBeed82r8l23Ac/myE382k68=
4+
github.com/Scalingo/go-utils/pagination v1.1.3-0.20260303075303-b0b0c6e4005d/go.mod h1:MwT1RRecXktFgVNeib+B4dnM4r0cPc93JichOPs5tj0=
55
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
66
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
77
github.com/frankban/quicktest v1.2.2 h1:xfmOhhoH5fGPgbEAlhLpJH9p0z/0Qizio9osmvn9IUY=

http/httpmock/client_mock.go

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

invoices.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import (
66
"time"
77

88
"github.com/Scalingo/go-utils/errors/v3"
9+
"github.com/Scalingo/go-utils/pagination"
910
)
1011

1112
type InvoicesService interface {
12-
InvoicesList(context.Context, PaginationOpts) (Invoices, PaginationMeta, error)
13-
InvoiceShow(context.Context, string) (*Invoice, error)
13+
InvoicesList(ctx context.Context, paginationReq pagination.Request) (Invoices, pagination.Meta, error)
14+
InvoiceShow(ctx context.Context, id string) (*Invoice, error)
1415
}
1516

1617
var _ InvoicesService = (*Client)(nil)
@@ -50,21 +51,21 @@ type Invoices []*Invoice
5051
type InvoicesRes struct {
5152
Invoices Invoices `json:"invoices"`
5253
Meta struct {
53-
PaginationMeta PaginationMeta `json:"pagination"`
54+
Pagination pagination.Meta `json:"pagination"`
5455
}
5556
}
5657

5758
type InvoiceRes struct {
5859
Invoice *Invoice `json:"invoice"`
5960
}
6061

61-
func (c *Client) InvoicesList(ctx context.Context, opts PaginationOpts) (Invoices, PaginationMeta, error) {
62+
func (c *Client) InvoicesList(ctx context.Context, paginationReq pagination.Request) (Invoices, pagination.Meta, error) {
6263
var invoicesRes InvoicesRes
63-
err := c.ScalingoAPI().ResourceList(ctx, "account/invoices", opts.ToMap(), &invoicesRes)
64+
err := c.ScalingoAPI().ResourceList(ctx, "account/invoices", paginationRequestToMap(paginationReq), &invoicesRes)
6465
if err != nil {
65-
return nil, PaginationMeta{}, errors.Wrap(ctx, err, "list invoices")
66+
return nil, pagination.Meta{}, errors.Wrap(ctx, err, "list invoices")
6667
}
67-
return invoicesRes.Invoices, invoicesRes.Meta.PaginationMeta, nil
68+
return invoicesRes.Invoices, invoicesRes.Meta.Pagination, nil
6869
}
6970

7071
func (c *Client) InvoiceShow(ctx context.Context, id string) (*Invoice, error) {

maintenance.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"time"
66

77
"github.com/Scalingo/go-utils/errors/v3"
8+
"github.com/Scalingo/go-utils/pagination"
89
)
910

1011
type MaintenanceWindow struct {
@@ -56,17 +57,17 @@ func (c *Client) DatabaseUpdateMaintenanceWindow(ctx context.Context, app, addon
5657
type ListMaintenanceResponse struct {
5758
Maintenance []*Maintenance `json:"maintenance"`
5859
Meta struct {
59-
PaginationMeta PaginationMeta `json:"pagination"`
60+
Pagination pagination.Meta `json:"pagination"`
6061
}
6162
}
6263

63-
func (c *Client) DatabaseListMaintenance(ctx context.Context, app, addonID string, opts PaginationOpts) ([]*Maintenance, PaginationMeta, error) {
64+
func (c *Client) DatabaseListMaintenance(ctx context.Context, app, addonID string, paginationReq pagination.Request) ([]*Maintenance, pagination.Meta, error) {
6465
var maintenanceRes ListMaintenanceResponse
65-
err := c.DBAPI(app, addonID).SubresourceList(ctx, "databases", addonID, "maintenance", opts.ToMap(), &maintenanceRes)
66+
err := c.DBAPI(app, addonID).SubresourceList(ctx, "databases", addonID, "maintenance", paginationRequestToMap(paginationReq), &maintenanceRes)
6667
if err != nil {
67-
return nil, PaginationMeta{}, errors.Wrapf(ctx, err, "list database '%v' maintenance", addonID)
68+
return nil, pagination.Meta{}, errors.Wrapf(ctx, err, "list database '%v' maintenance", addonID)
6869
}
69-
return maintenanceRes.Maintenance, maintenanceRes.Meta.PaginationMeta, nil
70+
return maintenanceRes.Maintenance, maintenanceRes.Meta.Pagination, nil
7071
}
7172

7273
func (c *Client) DatabaseShowMaintenance(ctx context.Context, app, addonID, maintenanceID string) (Maintenance, error) {

0 commit comments

Comments
 (0)