Skip to content

Commit

Permalink
fix(pagination): user Take instead of Scan as finisher methods fo…
Browse files Browse the repository at this point in the history
…r page info queries
  • Loading branch information
bradub committed Jan 5, 2024
1 parent 297353c commit 4636b02
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
8 changes: 4 additions & 4 deletions pagination/psql_pagination.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func getForwardPaginationPageInfo[T schema.Tabler](

query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE created_at < ?)", tableName)

if err := db.Raw(query, createdAt).Scan(&hasItemForward).Error; err != nil {
if err := db.Raw(query, createdAt).Take(&hasItemForward).Error; err != nil {
return PageInfo{}, fmt.Errorf("existence check for forward pagination: %w", err)
}

Expand All @@ -185,7 +185,7 @@ func getForwardPaginationPageInfo[T schema.Tabler](
if err := db.Raw(
query,
pagination.afterCursor.CreatedAt,
).Scan(&hasItemBackward).Error; err != nil {
).Take(&hasItemBackward).Error; err != nil {
return PageInfo{}, fmt.Errorf("existence check for backward pagination: %w", err)
}

Expand Down Expand Up @@ -219,7 +219,7 @@ func getBackwardPaginationPageInfo[T schema.Tabler](
tableName := model.TableName()

query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE created_at > ?)", tableName)
if err := db.Raw(query, createdAt).Scan(&hasItemBackward).Error; err != nil {
if err := db.Raw(query, createdAt).Take(&hasItemBackward).Error; err != nil {
return PageInfo{}, fmt.Errorf("existence check for backward pagination: %w", err)
}

Expand All @@ -232,7 +232,7 @@ func getBackwardPaginationPageInfo[T schema.Tabler](

query = fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE created_at < ?)", tableName)
if err := db.Raw(query, pagination.beforeCursor.CreatedAt).
Scan(&hasItemForward).Error; err != nil {
Take(&hasItemForward).Error; err != nil {
return PageInfo{}, fmt.Errorf("existence check for forward pagination: %w", err)
}

Expand Down
28 changes: 14 additions & 14 deletions pagination/psql_pagination_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type user struct {
CreatedAt time.Time `gorm:"column:created_at;type:timestamp with time zone;not null;default:now()"`
}

func (user) TableName() string {
func (*user) TableName() string {
return "users"
}

Expand Down Expand Up @@ -62,7 +62,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
req.NoError(err)
})

userToCursor := func(u user) *string {
userToCursor := func(u *user) *string {
return ptr.To((&pagination.Cursor{
ID: u.ID,
CreatedAt: u.CreatedAt,
Expand All @@ -85,14 +85,14 @@ func TestListPSQLPaginatedItems(t *testing.T) {
)
req.NoError(err)

users := make([]user, 100)
users := make([]*user, 100)

for i := 0; i < 100; i++ {
id := uuid.UUID{}

id[0] = byte(i)

users[i] = user{
users[i] = &user{
ID: id.String(),
CreatedAt: time.Now().Add(time.Duration(i) * time.Second),
}
Expand All @@ -101,17 +101,17 @@ func TestListPSQLPaginatedItems(t *testing.T) {
err = db.Create(users).Error
req.NoError(err)

psqlPaginator := pagination.PSQLPaginator[user]{
slices.Reverse(users)

psqlPaginator := pagination.PSQLPaginator[*user]{
DB: db,
}

slices.Reverse(users)

tests := map[string]struct {
params pagination.Arguments

expectedError require.ErrorAssertionFunc
expectedUsers []user
expectedUsers []*user
expectedPageInfo pagination.PageInfo
}{
"First3": {
Expand Down Expand Up @@ -201,7 +201,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
First: ptr.To(0),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: false,
HasNextPage: true,
Expand All @@ -214,7 +214,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
Last: ptr.To(0),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: true,
HasNextPage: false,
Expand All @@ -228,7 +228,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
After: userToCursor(users[0]),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: false,
HasNextPage: true,
Expand All @@ -242,7 +242,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
Before: userToCursor(users[99]),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: true,
HasNextPage: false,
Expand All @@ -256,7 +256,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
After: userToCursor(users[99]),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: true,
HasNextPage: false,
Expand All @@ -270,7 +270,7 @@ func TestListPSQLPaginatedItems(t *testing.T) {
Before: userToCursor(users[0]),
},
expectedError: require.NoError,
expectedUsers: []user{},
expectedUsers: []*user{},
expectedPageInfo: pagination.PageInfo{
HasPreviousPage: false,
HasNextPage: true,
Expand Down

0 comments on commit 4636b02

Please sign in to comment.