mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
NOISSUE - Allow sorting (#3052)
Signed-off-by: Musilah <nataleigh.nk@gmail.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user