Skip to content

Commit 2464962

Browse files
committed
feat: use resources to implements ledgers list pagination
1 parent af6d15a commit 2464962

File tree

80 files changed

+1158
-979
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1158
-979
lines changed

internal/api/bulking/mocks_ledger_controller_test.go

+10-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/api/common/mocks_ledger_controller_test.go

+10-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/api/common/mocks_system_controller_test.go

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/api/v1/controllers_accounts_count.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1
22

33
import (
44
"fmt"
5+
"github.com/formancehq/ledger/internal/storage/resources"
56
"net/http"
67

78
"errors"
@@ -28,7 +29,7 @@ func countAccounts(w http.ResponseWriter, r *http.Request) {
2829
count, err := l.CountAccounts(r.Context(), *rq)
2930
if err != nil {
3031
switch {
31-
case errors.Is(err, ledgercontroller.ErrInvalidQuery{}) || errors.Is(err, ledgercontroller.ErrMissingFeature{}):
32+
case errors.Is(err, resources.ErrInvalidQuery{}) || errors.Is(err, ledgercontroller.ErrMissingFeature{}):
3233
api.BadRequest(w, common.ErrValidation, err)
3334
default:
3435
common.HandleCommonErrors(w, r, err)

internal/api/v1/controllers_accounts_count_test.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1
22

33
import (
44
"github.com/formancehq/ledger/internal/api/common"
5+
"github.com/formancehq/ledger/internal/storage/resources"
56
"net/http"
67
"net/http/httptest"
78
"net/url"
@@ -24,7 +25,7 @@ func TestAccountsCount(t *testing.T) {
2425
type testCase struct {
2526
name string
2627
queryParams url.Values
27-
expectQuery ledgercontroller.ResourceQuery[any]
28+
expectQuery resources.ResourceQuery[any]
2829
expectStatusCode int
2930
expectedErrorCode string
3031
returnErr error
@@ -35,7 +36,7 @@ func TestAccountsCount(t *testing.T) {
3536
testCases := []testCase{
3637
{
3738
name: "nominal",
38-
expectQuery: ledgercontroller.ResourceQuery[any]{},
39+
expectQuery: resources.ResourceQuery[any]{},
3940
expectBackendCall: true,
4041
},
4142
{
@@ -44,15 +45,15 @@ func TestAccountsCount(t *testing.T) {
4445
"metadata[roles]": []string{"admin"},
4546
},
4647
expectBackendCall: true,
47-
expectQuery: ledgercontroller.ResourceQuery[any]{
48+
expectQuery: resources.ResourceQuery[any]{
4849
Builder: query.Match("metadata[roles]", "admin"),
4950
},
5051
},
5152
{
5253
name: "using address",
5354
queryParams: url.Values{"address": []string{"foo"}},
5455
expectBackendCall: true,
55-
expectQuery: ledgercontroller.ResourceQuery[any]{
56+
expectQuery: resources.ResourceQuery[any]{
5657
Builder: query.Match("address", "foo"),
5758
},
5859
},
@@ -62,7 +63,7 @@ func TestAccountsCount(t *testing.T) {
6263
queryParams: url.Values{
6364
"pageSize": []string{"1000000"},
6465
},
65-
expectQuery: ledgercontroller.ResourceQuery[any]{},
66+
expectQuery: resources.ResourceQuery[any]{},
6667
},
6768
{
6869
name: "using balance filter",
@@ -71,7 +72,7 @@ func TestAccountsCount(t *testing.T) {
7172
"balance": []string{"100"},
7273
},
7374
expectBackendCall: true,
74-
expectQuery: ledgercontroller.ResourceQuery[any]{
75+
expectQuery: resources.ResourceQuery[any]{
7576
Builder: query.Lt("balance", int64(100)),
7677
},
7778
},
@@ -80,24 +81,24 @@ func TestAccountsCount(t *testing.T) {
8081
expectStatusCode: http.StatusBadRequest,
8182
expectedErrorCode: common.ErrValidation,
8283
expectBackendCall: true,
83-
returnErr: ledgercontroller.ErrInvalidQuery{},
84-
expectQuery: ledgercontroller.ResourceQuery[any]{},
84+
returnErr: resources.ErrInvalidQuery{},
85+
expectQuery: resources.ResourceQuery[any]{},
8586
},
8687
{
8788
name: "with missing feature",
8889
expectStatusCode: http.StatusBadRequest,
8990
expectedErrorCode: common.ErrValidation,
9091
expectBackendCall: true,
9192
returnErr: ledgercontroller.ErrMissingFeature{},
92-
expectQuery: ledgercontroller.ResourceQuery[any]{},
93+
expectQuery: resources.ResourceQuery[any]{},
9394
},
9495
{
9596
name: "with unexpected error",
9697
expectStatusCode: http.StatusInternalServerError,
9798
expectedErrorCode: api.ErrorInternal,
9899
expectBackendCall: true,
99100
returnErr: errors.New("undefined error"),
100-
expectQuery: ledgercontroller.ResourceQuery[any]{},
101+
expectQuery: resources.ResourceQuery[any]{},
101102
},
102103
}
103104
for _, testCase := range testCases {

internal/api/v1/controllers_accounts_list_test.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1
22

33
import (
44
"github.com/formancehq/ledger/internal/api/common"
5+
"github.com/formancehq/ledger/internal/storage/resources"
56
"net/http"
67
"net/http/httptest"
78
"net/url"
@@ -25,7 +26,7 @@ func TestAccountsList(t *testing.T) {
2526
type testCase struct {
2627
name string
2728
queryParams url.Values
28-
expectQuery ledgercontroller.OffsetPaginatedQuery[any]
29+
expectQuery resources.OffsetPaginatedQuery[any]
2930
expectStatusCode int
3031
expectedErrorCode string
3132
expectBackendCall bool
@@ -36,7 +37,7 @@ func TestAccountsList(t *testing.T) {
3637
{
3738
name: "nominal",
3839
expectBackendCall: true,
39-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
40+
expectQuery: resources.OffsetPaginatedQuery[any]{
4041
PageSize: DefaultPageSize,
4142
},
4243
},
@@ -46,9 +47,9 @@ func TestAccountsList(t *testing.T) {
4647
"metadata[roles]": []string{"admin"},
4748
},
4849
expectBackendCall: true,
49-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
50+
expectQuery: resources.OffsetPaginatedQuery[any]{
5051
PageSize: DefaultPageSize,
51-
Options: ledgercontroller.ResourceQuery[any]{
52+
Options: resources.ResourceQuery[any]{
5253
Builder: query.Match("metadata[roles]", "admin"),
5354
},
5455
},
@@ -59,20 +60,20 @@ func TestAccountsList(t *testing.T) {
5960
"address": []string{"foo"},
6061
},
6162
expectBackendCall: true,
62-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
63+
expectQuery: resources.OffsetPaginatedQuery[any]{
6364
PageSize: DefaultPageSize,
64-
Options: ledgercontroller.ResourceQuery[any]{
65+
Options: resources.ResourceQuery[any]{
6566
Builder: query.Match("address", "foo"),
6667
},
6768
},
6869
},
6970
{
7071
name: "using empty cursor",
7172
queryParams: url.Values{
72-
"cursor": []string{bunpaginate.EncodeCursor(ledgercontroller.OffsetPaginatedQuery[any]{})},
73+
"cursor": []string{bunpaginate.EncodeCursor(resources.OffsetPaginatedQuery[any]{})},
7374
},
7475
expectBackendCall: true,
75-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{},
76+
expectQuery: resources.OffsetPaginatedQuery[any]{},
7677
},
7778
{
7879
name: "using invalid cursor",
@@ -96,7 +97,7 @@ func TestAccountsList(t *testing.T) {
9697
"pageSize": []string{"1000000"},
9798
},
9899
expectBackendCall: true,
99-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
100+
expectQuery: resources.OffsetPaginatedQuery[any]{
100101
PageSize: MaxPageSize,
101102
},
102103
},
@@ -107,9 +108,9 @@ func TestAccountsList(t *testing.T) {
107108
"balanceOperator": []string{"e"},
108109
},
109110
expectBackendCall: true,
110-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
111+
expectQuery: resources.OffsetPaginatedQuery[any]{
111112
PageSize: DefaultPageSize,
112-
Options: ledgercontroller.ResourceQuery[any]{
113+
Options: resources.ResourceQuery[any]{
113114
Builder: query.Match("balance", int64(100)),
114115
},
115116
},
@@ -120,7 +121,7 @@ func TestAccountsList(t *testing.T) {
120121
expectedErrorCode: common.ErrValidation,
121122
returnErr: ledgercontroller.ErrMissingFeature{},
122123
expectBackendCall: true,
123-
expectQuery: ledgercontroller.OffsetPaginatedQuery[any]{
124+
expectQuery: resources.OffsetPaginatedQuery[any]{
124125
PageSize: DefaultPageSize,
125126
},
126127
},

0 commit comments

Comments
 (0)