Passed
Push — master ( 03c495...6dd4e6 )
by Tolga
01:24 queued 13s
created

pkg/database/pagination.go   A

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 19
eloc 45
dl 0
loc 103
rs 10
c 0
b 0
f 0

12 Methods

Rating   Name   Duplication   Size   Complexity  
A database.Size 0 3 2
A database.Token 0 3 2
A database.Pagination.Token 0 2 1
A database.NewPagination 0 9 2
A database.Pagination.PageSize 0 2 1
A database.Sort 0 3 2
A database.Cursor 0 3 2
A database.Limit 0 3 2
A database.CursorPagination.Limit 0 2 1
A database.CursorPagination.Cursor 0 2 1
A database.NewCursorPagination 0 9 2
A database.CursorPagination.Sort 0 2 1
1
package database
2
3
// PaginationOption - Option type
4
type PaginationOption func(*Pagination)
5
6
// Size -
7
func Size(size uint32) PaginationOption {
8
	return func(c *Pagination) {
9
		c.size = size
10
	}
11
}
12
13
// Token -
14
func Token(token string) PaginationOption {
15
	return func(c *Pagination) {
16
		c.token = token
17
	}
18
}
19
20
// Pagination -
21
type Pagination struct {
22
	size  uint32
23
	token string
24
}
25
26
// NewPagination -
27
func NewPagination(opts ...PaginationOption) Pagination {
28
	pagination := &Pagination{}
29
30
	// Custom options
31
	for _, opt := range opts {
32
		opt(pagination)
33
	}
34
35
	return *pagination
36
}
37
38
// PageSize -
39
func (p Pagination) PageSize() uint32 {
40
	return p.size
41
}
42
43
// Token -
44
func (p Pagination) Token() string {
45
	return p.token
46
}
47
48
// CursorPaginationOption - Option type
49
type CursorPaginationOption func(*CursorPagination)
50
51
// CursorPagination -
52
type CursorPagination struct {
53
	cursor string
54
	sort   string
55
	limit  uint32
56
}
57
58
// NewCursorPagination -
59
func NewCursorPagination(opts ...CursorPaginationOption) CursorPagination {
60
	pagination := &CursorPagination{}
61
62
	// Custom options
63
	for _, opt := range opts {
64
		opt(pagination)
65
	}
66
67
	return *pagination
68
}
69
70
// Cursor -
71
func Cursor(cursor string) CursorPaginationOption {
72
	return func(c *CursorPagination) {
73
		c.cursor = cursor
74
	}
75
}
76
77
// Sort -
78
func Sort(sort string) CursorPaginationOption {
79
	return func(c *CursorPagination) {
80
		c.sort = sort
81
	}
82
}
83
84
// Limit -
85
func Limit(limit uint32) CursorPaginationOption {
86
	return func(c *CursorPagination) {
87
		c.limit = limit
88
	}
89
}
90
91
// Cursor -
92
func (p CursorPagination) Cursor() string {
93
	return p.cursor
94
}
95
96
// Sort -
97
func (p CursorPagination) Sort() string {
98
	return p.sort
99
}
100
101
// Limit -
102
func (p CursorPagination) Limit() uint32 {
103
	return p.limit
104
}
105