diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a18705..a27dbce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v0.0.1-rc3] 2024-12-17 + +## BugFix + +- Fixing bug for page 0 and page 1 returning same result + ## [v0.0.1-rc2] 2024-11-30 ### Added diff --git a/examples/go.mod b/examples/go.mod index 841947f..769c738 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -3,14 +3,14 @@ module filter go 1.18 require ( - gorm.io/driver/sqlite v1.5.6 + gorm.io/driver/sqlite v1.5.7 gorm.io/gorm v1.25.12 ) require ( github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/manuelarte/pagorminator v0.0.0-20241112184441-94e89258c801 // indirect + github.com/manuelarte/pagorminator v0.0.1-rc2 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/text v0.21.0 // indirect ) diff --git a/examples/go.sum b/examples/go.sum index 119577f..f55f852 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -8,11 +8,17 @@ github.com/manuelarte/pagorminator v0.0.0-20241112002222-7b6cda225c98 h1:2TbBVYW github.com/manuelarte/pagorminator v0.0.0-20241112002222-7b6cda225c98/go.mod h1:e7ZYAl1XwI3uc0rOXmfF4FToPSS+C65DM4sPXwRNkKs= github.com/manuelarte/pagorminator v0.0.0-20241112184441-94e89258c801 h1:C9Dm0kyXn4SmtUFredKb902rdSBWgW/J/Q8l6i/WtCM= github.com/manuelarte/pagorminator v0.0.0-20241112184441-94e89258c801/go.mod h1:e7ZYAl1XwI3uc0rOXmfF4FToPSS+C65DM4sPXwRNkKs= +github.com/manuelarte/pagorminator v0.0.1-rc2 h1:yXShWu5v1VK7MXZTyiXXDOlb/CU7jhC0FBSNL6eX4qQ= +github.com/manuelarte/pagorminator v0.0.1-rc2/go.mod h1:0fRra9ZJL6SF7i7jVd5oFfMkgsWrTg2dXAD5xVVCkko= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= +gorm.io/driver/sqlite v1.5.7 h1:8NvsrhP0ifM7LX9G4zPB97NwovUakUxc+2V2uuf3Z1I= +gorm.io/driver/sqlite v1.5.7/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= diff --git a/examples/many-pages/main.go b/examples/many-pages/main.go new file mode 100644 index 0000000..ad3b87a --- /dev/null +++ b/examples/many-pages/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "fmt" + "github.com/manuelarte/pagorminator" + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "strconv" +) + +type Product struct { + gorm.Model + Code string + Price uint +} + +func (p Product) String() string { + return fmt.Sprintf("Product{Code: %s, Price: %d}", p.Code, p.Price) +} + +func main() { + db, err := gorm.Open(sqlite.Open("file:mem?mode=memory&cache=shared"), &gorm.Config{}) + if err != nil { + panic("failed to connect database") + } + + _ = db.Use(pagorminator.PaGormMinator{}) + _ = db.AutoMigrate(&Product{}) + length := 10 + for i := 0; i < length; i++ { + db.Create(&Product{Code: strconv.Itoa(i), Price: uint(i)}) + } + + fmt.Printf("%s product created\n", length) + + var products []*Product + pageRequest, _ := pagorminator.PageRequest(0, 5) + db.Clauses(pageRequest).Find(&products) + + fmt.Printf("PageRequest result:(Page: %d, Size: %d, TotalElements: %d, TotalPages: %d)\n", + pageRequest.GetPage(), pageRequest.GetSize(), pageRequest.GetTotalElements(), pageRequest.GetTotalPages()) + for _, product := range products { + fmt.Printf("\t Product: %s\n", product) + } + + pageRequest, _ = pagorminator.PageRequest(1, 5) + db.Clauses(pageRequest).Find(&products) + fmt.Printf("PageRequest result:(Page: %d, Size: %d, TotalElements: %d, TotalPages: %d)\n", + pageRequest.GetPage(), pageRequest.GetSize(), pageRequest.GetTotalElements(), pageRequest.GetTotalPages()) + for _, product := range products { + fmt.Printf("\t Product: %s\n", product) + } +} diff --git a/model.go b/model.go index cedf057..34c35d0 100644 --- a/model.go +++ b/model.go @@ -56,7 +56,7 @@ func (p *Pagination) GetSize() int { // GetOffset Get the offset func (p *Pagination) GetOffset() int { - return (p.page - 1) * p.size + return p.page * p.size } // GetTotalPages Get the total number of pages