Skip to content

Commit 00c2c7d

Browse files
committed
improve paginations
1 parent d58805c commit 00c2c7d

File tree

7 files changed

+47
-30
lines changed

7 files changed

+47
-30
lines changed

dics/core.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,9 @@ var Core = []dingo.Def{
522522
{
523523
Name: "core:pagination:paginator",
524524
Build: (*paginations.Pagination)(nil),
525+
}, {
526+
Name: "core:pagination:request",
527+
Build: (*paginations.Request)(nil),
525528
},
526529
{
527530
Name: "core:service:repository",

generators/templates/module.tpl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type Module struct {
2828
Validator *validations.{{.Module}}
2929
Cache *utils.Cache
3030
Paginator *paginations.Pagination
31+
Request *paginations.Request
3132
}
3233

3334
func NewModule(
@@ -41,6 +42,7 @@ func NewModule(
4142
validator *validations.{{.Module}},
4243
cache *utils.Cache,
4344
paginator *paginations.Pagination,
45+
request *paginations.Request,
4446
) *Module {
4547
return &Module{
4648
Context: context,
@@ -52,6 +54,7 @@ func NewModule(
5254
Validator: validator,
5355
Cache: cache,
5456
Paginator: paginator,
57+
Request: request,
5558
}
5659
}
5760

@@ -61,7 +64,8 @@ func (m *Module) GetPaginated(c context.Context, r *grpcs.Pagination) (*grpcs.{{
6164
model := models.{{.Module}}{}
6265
m.Paginator.Model = model.TableName()
6366

64-
m.Paginator.Handle(r)
67+
copier.Copy(m.Request, r)
68+
m.Paginator.Handle(m.Request)
6569

6670
metadata, result := m.Handler.Paginate(*m.Paginator)
6771
for _, v := range result {

handlers/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type Handler struct {
2525
Repository *services.Repository
2626
}
2727

28-
func (h *Handler) Paginate(paginator paginations.Pagination) (paginations.PaginationMeta, []interface{}) {
28+
func (h *Handler) Paginate(paginator paginations.Pagination) (paginations.Metadata, []interface{}) {
2929
query := elastic.NewBoolQuery()
3030

3131
h.Dispatcher.Dispatch(PAGINATION_EVENT, &events.Pagination{
@@ -45,7 +45,7 @@ func (h *Handler) Paginate(paginator paginations.Pagination) (paginations.Pagina
4545
next = -1
4646
}
4747

48-
return paginations.PaginationMeta{
48+
return paginations.Metadata{
4949
Record: len(result),
5050
Page: paginator.Page,
5151
Previous: paginator.Page - 1,

paginations/filter.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package paginations
2+
3+
type Filter struct {
4+
Field string
5+
Value string
6+
}

paginations/metadata.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package paginations
2+
3+
type Metadata struct {
4+
Record int
5+
Page int
6+
Previous int
7+
Next int
8+
Limit int
9+
Total int
10+
}

paginations/pagination.go

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,10 @@ package paginations
33
import (
44
"strings"
55

6-
grpcs "github.com/crowdeco/skeleton/protos/builds"
76
paginator "github.com/vcraescu/go-paginator/v2"
87
)
98

109
type (
11-
Filter struct {
12-
Field string
13-
Value string
14-
}
15-
1610
Pagination struct {
1711
Limit int
1812
Page int
@@ -23,42 +17,33 @@ type (
2317
Pager paginator.Paginator
2418
Model string
2519
}
26-
27-
PaginationMeta struct {
28-
Record int
29-
Page int
30-
Previous int
31-
Next int
32-
Limit int
33-
Total int
34-
}
3520
)
3621

37-
func (p *Pagination) Handle(pagination *grpcs.Pagination) {
38-
if 0 == pagination.Page {
39-
pagination.Page = 1
22+
func (p *Pagination) Handle(request *Request) {
23+
if 0 == request.Page {
24+
request.Page = 1
4025
}
4126

42-
if 0 == pagination.Limit {
43-
pagination.Limit = 17
27+
if 0 == request.Limit {
28+
request.Limit = 17
4429
}
4530

4631
p.Filters = nil
47-
if len(pagination.Fields) == len(pagination.Values) {
48-
for k, v := range pagination.Fields {
32+
if len(request.Fields) == len(request.Values) {
33+
for k, v := range request.Fields {
4934
if v != "" {
50-
p.Filters = append(p.Filters, Filter{Field: strings.Title(v), Value: pagination.Values[k]})
35+
p.Filters = append(p.Filters, Filter{Field: strings.Title(v), Value: request.Values[k]})
5136
}
5237
}
5338
}
5439

55-
if pagination.Counter > 0 {
40+
if request.Counter > 0 {
5641
p.UseCounter = true
57-
p.Counter = pagination.Counter
42+
p.Counter = request.Counter
5843
}
5944

60-
p.Limit = int(pagination.Limit)
61-
p.Page = int(pagination.Page)
45+
p.Limit = int(request.Limit)
46+
p.Page = int(request.Page)
6247
}
6348

6449
func (p *Pagination) Paginate(adapter paginator.Adapter) *Pagination {

paginations/request.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package paginations
2+
3+
type Request struct {
4+
Page int32
5+
Counter uint64
6+
Limit int32
7+
Fields []string
8+
Values []string
9+
}

0 commit comments

Comments
 (0)