Skip to content

Commit

Permalink
chore: new API
Browse files Browse the repository at this point in the history
Signed-off-by: moul <[email protected]>
  • Loading branch information
moul committed Sep 26, 2024
1 parent 97794d7 commit 1da8805
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 18 deletions.
25 changes: 21 additions & 4 deletions examples/gno.land/p/demo/avl/pager/pager.gno
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,37 @@ type Item struct {
}

// NewPager creates a new Pager with default values.
func NewPager(tree *avl.Tree) *Pager {
func NewPager(tree *avl.Tree, defaultPageSize int) *Pager {
return &Pager{
Tree: tree,
PageQueryParam: "page",
SizeQueryParam: "size",
DefaultPageSize: 10,
DefaultPageSize: defaultPageSize,
}
}

// GetPage retrieves a page of results from the AVL tree.
func (p *Pager) GetPage(pageNumber int, pageSize int) *Page {
func (p *Pager) GetPage(pageNumber int) *Page {
return p.GetPageWithSize(pageNumber, p.DefaultPageSize)
}

func (p *Pager) GetPageWithSize(pageNumber, pageSize int) *Page {
totalItems := p.Tree.Size()
totalPages := int(math.Ceil(float64(totalItems) / float64(pageSize)))

if pageSize < 1 {
return &Page{
Items: []Item{},
PageNumber: 0,
PageSize: 0,
TotalItems: totalItems,
TotalPages: totalPages,
HasPrev: false,
HasNext: false,
Pager: p,
}
}

if pageNumber < 1 {
return &Page{
Items: []Item{},
Expand Down Expand Up @@ -114,7 +131,7 @@ func (p *Pager) GetPageByPath(rawURL string) (*Page, error) {
if err != nil {
return nil, err
}
return p.GetPage(pageNumber, pageSize), nil
return p.GetPageWithSize(pageNumber, pageSize), nil
}

// UI generates the Markdown UI for the page selector.
Expand Down
16 changes: 8 additions & 8 deletions examples/gno.land/p/demo/avl/pager/pager_test.gno
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestPager_GetPage(t *testing.T) {
tree.Set("e", 5)

// Create a new pager.
pager := NewPager(tree)
pager := NewPager(tree, 10)

// Define test cases.
tests := []struct {
Expand All @@ -37,7 +37,7 @@ func TestPager_GetPage(t *testing.T) {
}

for _, tt := range tests {
page := pager.GetPage(tt.pageNumber, tt.pageSize)
page := pager.GetPageWithSize(tt.pageNumber, tt.pageSize)

uassert.Equal(t, len(tt.expected), len(page.Items))

Expand All @@ -56,7 +56,7 @@ func TestPager_GetPageByPath(t *testing.T) {
}

// Create a new pager.
pager := NewPager(tree)
pager := NewPager(tree, 10)

// Define test cases.
tests := []struct {
Expand Down Expand Up @@ -90,7 +90,7 @@ func TestPage_Selector(t *testing.T) {
tree.Set("e", 5)

// Create a new pager.
pager := NewPager(tree)
pager := NewPager(tree, 10)

// Define test cases.
tests := []struct {
Expand All @@ -104,7 +104,7 @@ func TestPage_Selector(t *testing.T) {
}

for _, tt := range tests {
page := pager.GetPage(tt.pageNumber, tt.pageSize)
page := pager.GetPageWithSize(tt.pageNumber, tt.pageSize)

ui := page.Selector()
uassert.Equal(t, tt.expected, ui)
Expand All @@ -119,7 +119,7 @@ func TestPager_UI_WithManyPages(t *testing.T) {
}

// Create a new pager.
pager := NewPager(tree)
pager := NewPager(tree, 10)

// Define test cases for a large number of pages.
tests := []struct {
Expand All @@ -143,7 +143,7 @@ func TestPager_UI_WithManyPages(t *testing.T) {
}

for _, tt := range tests {
page := pager.GetPage(tt.pageNumber, tt.pageSize)
page := pager.GetPageWithSize(tt.pageNumber, tt.pageSize)

ui := page.Selector()
uassert.Equal(t, tt.expected, ui)
Expand All @@ -160,7 +160,7 @@ func TestPager_ParseQuery(t *testing.T) {
tree.Set("e", 5)

// Create a new pager.
pager := NewPager(tree)
pager := NewPager(tree, 10)

// Define test cases.
tests := []struct {
Expand Down
4 changes: 2 additions & 2 deletions examples/gno.land/p/demo/avl/pager/z_filetest.gno
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ func main() {
}

// Create a new pager.
pager := pager.NewPager(tree)
pager := pager.NewPager(tree, 7)

for pn := -1; pn < 8; pn++ {
page := pager.GetPage(pn, 7)
page := pager.GetPage(pn)

println(ufmt.Sprintf("## Page %d of %d", page.PageNumber, page.TotalPages))
for idx, item := range page.Items {
Expand Down
2 changes: 1 addition & 1 deletion examples/gno.land/r/demo/users/users.gno
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ func Render(fullPath string) string {
func renderHome(path string) string {
doc := ""

page := pager.NewPager(&name2User).MustGetPageByPath(path)
page := pager.NewPager(&name2User, 50).MustGetPageByPath(path)

for _, item := range page.Items {
user := item.Value.(*users.User)
Expand Down
6 changes: 3 additions & 3 deletions examples/gno.land/r/demo/users/z_5_filetest.gno
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ func main() {
// * [nt](/r/demo/users:nt)
// * [satoshi](/r/demo/users:satoshi)
// * [sys](/r/demo/users:sys)
// **1** | [2](?page=2)
// ========================================
// * [test1](/r/demo/users:test1)
// * [x](/r/demo/users:x)
// [1](?page=1) | **2**
//
// ========================================
//
// ========================================
// ## user gnouser
//
Expand Down

0 comments on commit 1da8805

Please sign in to comment.