From 16c689403fcdc73cb2394f81e206ee883d2f3aeb Mon Sep 17 00:00:00 2001 From: Vyacheslav1557 Date: Sat, 29 Mar 2025 03:28:31 +0500 Subject: [PATCH] fix: fix&refactor --- internal/models/pagination.go | 7 +++++++ internal/users/repository/pg_repository.go | 20 +++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/internal/models/pagination.go b/internal/models/pagination.go index c2fd852..f158496 100644 --- a/internal/models/pagination.go +++ b/internal/models/pagination.go @@ -4,3 +4,10 @@ type Pagination struct { Page int32 `json:"page"` Total int32 `json:"total"` } + +func Total(count int32, pageSize int32) int32 { + if count%pageSize == 0 { + return count / pageSize + } + return count/pageSize + 1 +} diff --git a/internal/users/repository/pg_repository.go b/internal/users/repository/pg_repository.go index 0606cbd..c8732ab 100644 --- a/internal/users/repository/pg_repository.go +++ b/internal/users/repository/pg_repository.go @@ -215,26 +215,28 @@ func (c *Caller) ListUsers(ctx context.Context, filters models.UsersListFilters) return nil, pkg.Wrap(pkg.ErrBadInput, nil, op, "limit > 20") } - usersList := &models.UsersList{ - Users: make([]*models.User, 0), - Pagination: models.Pagination{}, - } + var list []*models.User query := c.db.Rebind(ListUsers) - err := c.db.SelectContext(ctx, &usersList.Users, query, filters.PageSize, filters.Offset()) + err := c.db.SelectContext(ctx, &list, query, filters.PageSize, filters.Offset()) if err != nil { return nil, handlePgErr(err, op) } query = c.db.Rebind(CountUsers) - err = c.db.GetContext(ctx, &usersList.Pagination.Total, query) + var count int32 + err = c.db.GetContext(ctx, &count, query) if err != nil { return nil, handlePgErr(err, op) } - usersList.Pagination.Page = filters.Page - - return usersList, nil + return &models.UsersList{ + Users: list, + Pagination: models.Pagination{ + Total: models.Total(count, filters.PageSize), + Page: filters.Page, + }, + }, nil } func handlePgErr(err error, op string) error {