NOISSUE - Allow sorting (#3052)

Signed-off-by: Musilah <nataleigh.nk@gmail.com>
This commit is contained in:
Nataly Musilah
2025-08-18 15:54:26 +03:00
committed by GitHub
parent b942a42271
commit 2e3f52fdbf
16 changed files with 149 additions and 19 deletions
+1 -1
View File
@@ -743,7 +743,7 @@ func TestListUsers(t *testing.T) {
},
},
token: validToken,
query: "order=name",
query: "order=username",
status: http.StatusOK,
authnRes: smqauthn.Session{UserID: validID, DomainID: domainID},
err: nil,
+7
View File
@@ -99,6 +99,13 @@ func (req listUsersReq) validate() error {
if req.limit > maxLimitSize || req.limit < 1 {
return apiutil.ErrLimitSize
}
switch req.order {
case "", api.CreatedAtOrder, api.UpdatedAtOrder, api.FirstNameKey, api.LastNameKey, api.UsernameKey, api.EmailKey:
default:
return apiutil.ErrInvalidOrder
}
if req.dir != "" && (req.dir != api.AscDir && req.dir != api.DescDir) {
return apiutil.ErrInvalidDirection
}
+1 -1
View File
@@ -113,7 +113,7 @@ func (res viewUserRes) Empty() bool {
type usersPageRes struct {
pageRes
Users []viewUserRes `json:"users,omitempty"`
Users []viewUserRes `json:"users"`
}
func (res usersPageRes) Code() int {
+10 -1
View File
@@ -117,9 +117,18 @@ func (repo *userRepo) RetrieveAll(ctx context.Context, pm users.Page) (users.Use
return users.UsersPage{}, errors.Wrap(repoerr.ErrViewEntity, err)
}
orderClause := ""
switch pm.Order {
case "first_name", "last_name", "username", "email", "created_at", "updated_at":
orderClause = fmt.Sprintf("ORDER BY u.%s", pm.Order)
if pm.Dir == api.AscDir || pm.Dir == api.DescDir {
orderClause = fmt.Sprintf("%s %s", orderClause, pm.Dir)
}
}
q := fmt.Sprintf(`SELECT u.id, u.tags, u.email, u.metadata, u.status, u.role, u.first_name, u.last_name, u.username,
u.created_at, u.updated_at, u.profile_picture, COALESCE(u.updated_by, '') AS updated_by
FROM users u %s ORDER BY u.created_at LIMIT :limit OFFSET :offset;`, query)
FROM users u %s %s LIMIT :limit OFFSET :offset;`, query, orderClause)
dbPage, err := ToDBUsersPage(pm)
if err != nil {