Add --state and --contract-ended flags to CLI user list
Replace the --active boolean flag with two explicit filters: --state (ACTIVE/INACTIVE) and --contract-ended (true/false). Also add state filter support to the console GraphQL API. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -61,12 +61,13 @@ type profile struct {
|
|||||||
|
|
||||||
func NewCmdList(f *cmdutil.Factory) *cobra.Command {
|
func NewCmdList(f *cmdutil.Factory) *cobra.Command {
|
||||||
var (
|
var (
|
||||||
flagOrg string
|
flagOrg string
|
||||||
flagLimit int
|
flagLimit int
|
||||||
flagOrder string
|
flagOrder string
|
||||||
flagOrderDir string
|
flagOrderDir string
|
||||||
flagActive bool
|
flagContractEnded string
|
||||||
flagOutput *string
|
flagState string
|
||||||
|
flagOutput *string
|
||||||
)
|
)
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@@ -76,8 +77,11 @@ func NewCmdList(f *cmdutil.Factory) *cobra.Command {
|
|||||||
Example: ` # List users in the default organization
|
Example: ` # List users in the default organization
|
||||||
prb user list
|
prb user list
|
||||||
|
|
||||||
# List only active users as JSON
|
# List only active users
|
||||||
prb user ls --active --json`,
|
prb user ls --state ACTIVE
|
||||||
|
|
||||||
|
# List users whose contract has ended
|
||||||
|
prb user ls --contract-ended true`,
|
||||||
Args: cobra.NoArgs,
|
Args: cobra.NoArgs,
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
if err := cmdutil.ValidateOutputFlag(flagOutput); err != nil {
|
if err := cmdutil.ValidateOutputFlag(flagOutput); err != nil {
|
||||||
@@ -124,10 +128,24 @@ func NewCmdList(f *cmdutil.Factory) *cobra.Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if flagActive {
|
filter := map[string]any{}
|
||||||
variables["filter"] = map[string]any{
|
|
||||||
"contractEnded": false,
|
if flagContractEnded != "" {
|
||||||
|
if err := cmdutil.ValidateEnum("contract-ended", flagContractEnded, []string{"true", "false"}); err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
filter["contractEnded"] = flagContractEnded == "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
if flagState != "" {
|
||||||
|
if err := cmdutil.ValidateEnum("state", flagState, []string{"ACTIVE", "INACTIVE"}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
filter["state"] = flagState
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(filter) > 0 {
|
||||||
|
variables["filter"] = filter
|
||||||
}
|
}
|
||||||
|
|
||||||
profiles, totalCount, err := api.Paginate(
|
profiles, totalCount, err := api.Paginate(
|
||||||
@@ -210,7 +228,8 @@ func NewCmdList(f *cmdutil.Factory) *cobra.Command {
|
|||||||
cmd.Flags().IntVarP(&flagLimit, "limit", "L", 30, "Maximum number of users to list")
|
cmd.Flags().IntVarP(&flagLimit, "limit", "L", 30, "Maximum number of users to list")
|
||||||
cmd.Flags().StringVar(&flagOrder, "order-by", "", "Order by field (FULL_NAME, CREATED_AT, KIND)")
|
cmd.Flags().StringVar(&flagOrder, "order-by", "", "Order by field (FULL_NAME, CREATED_AT, KIND)")
|
||||||
cmd.Flags().StringVar(&flagOrderDir, "order-direction", "DESC", "Sort direction (ASC, DESC)")
|
cmd.Flags().StringVar(&flagOrderDir, "order-direction", "DESC", "Sort direction (ASC, DESC)")
|
||||||
cmd.Flags().BoolVar(&flagActive, "active", false, "Show only users with active or no contract")
|
cmd.Flags().StringVar(&flagContractEnded, "contract-ended", "", "Filter by contract status (true or false)")
|
||||||
|
cmd.Flags().StringVar(&flagState, "state", "", "Filter by profile state (ACTIVE or INACTIVE)")
|
||||||
flagOutput = cmdutil.AddOutputFlag(cmd)
|
flagOutput = cmdutil.AddOutputFlag(cmd)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ input ProfileOrder
|
|||||||
|
|
||||||
input ProfileFilter {
|
input ProfileFilter {
|
||||||
contractEnded: Boolean
|
contractEnded: Boolean
|
||||||
|
state: ProfileState
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProfileConnection
|
type ProfileConnection
|
||||||
|
|||||||
@@ -124,6 +124,9 @@ func (r *organizationResolver) Profiles(ctx context.Context, obj *types.Organiza
|
|||||||
filters := coredata.NewMembershipProfileFilter(nil).WithMembership()
|
filters := coredata.NewMembershipProfileFilter(nil).WithMembership()
|
||||||
if filter != nil {
|
if filter != nil {
|
||||||
filters = coredata.NewMembershipProfileFilter(filter.ContractEnded).WithMembership()
|
filters = coredata.NewMembershipProfileFilter(filter.ContractEnded).WithMembership()
|
||||||
|
if filter.State != nil {
|
||||||
|
filters.WithState(*filter.State)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pageOrderBy := page.OrderBy[coredata.MembershipProfileOrderField]{
|
pageOrderBy := page.OrderBy[coredata.MembershipProfileOrderField]{
|
||||||
|
|||||||
Reference in New Issue
Block a user