Skip to content

Commit

Permalink
feat(users): add sort, sorted-by flags to search command (#51)
Browse files Browse the repository at this point in the history
Add sort, sorted-by flags to user search command.
  • Loading branch information
mariiatuzovska committed Jan 18, 2023
1 parent da80d99 commit b619be7
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 8 deletions.
8 changes: 8 additions & 0 deletions .changes/unreleased/🎉 Feature-20230116-210606.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
kind: "\U0001F389 Feature"
body: Add sort, sorted-by flags for representing data in ascending or descending order by some field with the user search command.
time: 2023-01-16T21:06:06.284338772+02:00
custom:
azure-boards-workitemid-fixed: '481929'
azure-boards-workitemid-related: '481683'
github-contributor: ''
github-link: ''
35 changes: 27 additions & 8 deletions commands/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,19 @@ func GetUserSearchCmd() (cli.Command, error) {
return NewCommand(CommandArgs{
Path: []string{cst.NounUser, cst.Search},
SynopsisText: "user search (<query> | --query)",
HelpText: fmt.Sprintf(`Search for a %[1]s from %[2]s
HelpText: `Search for users from DevOps Secrets Vault
Usage:
• user search %[3]s
• user search --query %[3]s
`, cst.NounUser, cst.ProductName, cst.ExampleUserSearch),
• user search adm
• user search --query adm --limit 10
• user search --sort asc --sorted-by created
`,
FlagsPredictor: []*predictor.Params{
{Name: cst.Query, Shorthand: "q", Usage: fmt.Sprintf("%s of %ss to fetch (optional)", strings.Title(cst.Query), cst.NounUser)},
{Name: cst.Limit, Shorthand: "l", Usage: cst.LimitHelpMessage},
{Name: cst.Cursor, Usage: cst.CursorHelpMessage},
{Name: cst.Sort, Usage: cst.SortHelpMessage},
{Name: cst.SortedBy, Usage: "Sort by name, created or lastModified field (optional)", Default: "lastModified"},
},
RunFunc: handleUserSearchCmd,
})
Expand Down Expand Up @@ -193,12 +196,20 @@ func handleUserSearchCmd(vcli vaultcli.CLI, args []string) int {
query := viper.GetString(cst.Query)
limit := viper.GetString(cst.Limit)
cursor := viper.GetString(cst.Cursor)
sort := viper.GetString(cst.Sort)
sortedBy := viper.GetString(cst.SortedBy)

if query == "" && len(args) > 0 && !strings.HasPrefix(args[0], "-") {
query = args[0]
}

data, apiErr := userSearch(vcli, &userSearchParams{query: query, limit: limit, cursor: cursor})
data, apiErr := userSearch(vcli, &userSearchParams{
query: query,
limit: limit,
cursor: cursor,
sort: sort,
sortedBy: sortedBy,
})
vcli.Out().WriteResponse(data, apiErr)
return utils.GetExecStatus(apiErr)
}
Expand Down Expand Up @@ -544,9 +555,11 @@ func userRestore(vcli vaultcli.CLI, username string) ([]byte, *errors.ApiError)
}

type userSearchParams struct {
query string
limit string
cursor string
query string
limit string
cursor string
sort string
sortedBy string
}

func userSearch(vcli vaultcli.CLI, p *userSearchParams) ([]byte, *errors.ApiError) {
Expand All @@ -560,6 +573,12 @@ func userSearch(vcli vaultcli.CLI, p *userSearchParams) ([]byte, *errors.ApiErro
if p.cursor != "" {
queryParams[cst.Cursor] = p.cursor
}
if p.sort != "" {
queryParams[cst.Sort] = p.sort
}
if p.sortedBy != "" {
queryParams["sortedBy"] = p.sortedBy
}
uri := paths.CreateURI(cst.NounUsers, queryParams)
return vcli.HTTPClient().DoRequest(http.MethodGet, uri, nil)
}

0 comments on commit b619be7

Please sign in to comment.