github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/api/cloudcontroller/ccv3/query.go (about)

     1  package ccv3
     2  
     3  import (
     4  	"net/url"
     5  	"strings"
     6  )
     7  
     8  // QueryKey is the type of query that is being selected on.
     9  type QueryKey string
    10  
    11  const (
    12  	// AppGUIDFilter is a query parameter for listing objects by app GUID.
    13  	AppGUIDFilter QueryKey = "app_guids"
    14  	// GUIDFilter is a query parameter for listing objects by GUID.
    15  	GUIDFilter QueryKey = "guids"
    16  	// LabelSelectorFilter is a query parameter for listing objects by label
    17  	LabelSelectorFilter QueryKey = "label_selector"
    18  	// NameFilter is a query parameter for listing objects by name.
    19  	NameFilter QueryKey = "names"
    20  	// NoRouteFilter is a query parameter for skipping route creation and unmapping existing routes.
    21  	NoRouteFilter QueryKey = "no_route"
    22  	// OrganizationGUIDFilter is a query parameter for listing objects by Organization GUID.
    23  	OrganizationGUIDFilter QueryKey = "organization_guids"
    24  	// SequenceIDFilter is a query parameter for listing objects by sequence ID.
    25  	SequenceIDFilter QueryKey = "sequence_ids"
    26  	// SpaceGUIDFilter is a query parameter for listing objects by Space GUID.
    27  	SpaceGUIDFilter QueryKey = "space_guids"
    28  	// StatusValueFilter is a query parameter for listing deployments by status.value
    29  	StatusValueFilter QueryKey = "status_values"
    30  	// DomainGUIDFilter is a query param for listing events by target_guid
    31  	TargetGUIDFilter QueryKey = "target_guids"
    32  	// DomainGUIDFilter is a query param for listing objects by domain_guid
    33  	DomainGUIDFilter QueryKey = "domain_guids"
    34  	// HostsFilter is a query param for listing objects by hostname
    35  	HostsFilter QueryKey = "hosts"
    36  	// HostFilter is a query param for getting an object with the given host
    37  	HostFilter QueryKey = "host"
    38  	// Origins filter is a query parameter when getting a user by origin (Note: CAPI will return an error if usernames filter is not also provided)
    39  	OriginsFilter QueryKey = "origins"
    40  	// PathsFilter is a query param for listing objects by path
    41  	PathsFilter QueryKey = "paths"
    42  	// PathFilter is a query param for getting an object with the given host
    43  	PathFilter QueryKey = "path"
    44  	// RoleTypesFilter is a query param for getting a role by type
    45  	RoleTypesFilter QueryKey = "types"
    46  	// StackFilter is a query parameter for listing objects by stack name
    47  	StackFilter QueryKey = "stacks"
    48  	// Unmapped filter is a query parameter specifying unmapped routes
    49  	UnmappedFilter QueryKey = "unmapped"
    50  	// UserGUIDFilter filter is a query parameter when getting a user by GUID
    51  	UserGUIDFilter QueryKey = "user_guids"
    52  	// Usernames filter is a query parameter when getting a user by username
    53  	UsernamesFilter QueryKey = "usernames"
    54  	// States filter is a query parameter when getting a package's droplets by state
    55  	StatesFilter QueryKey = "states"
    56  
    57  	// OrderBy is a query parameter to specify how to order objects.
    58  	OrderBy QueryKey = "order_by"
    59  	// PerPage is a query parameter for specifying the number of results per page.
    60  	PerPage QueryKey = "per_page"
    61  	// Include is a query parameter for specifying other resources associated with the
    62  	// resource returned by the endpoint
    63  	Include QueryKey = "include"
    64  
    65  	// NameOrder is a query value for ordering by name. This value is used in
    66  	// conjunction with the OrderBy QueryKey.
    67  	NameOrder = "name"
    68  
    69  	// PositionOrder is a query value for ordering by position. This value is
    70  	// used in conjunction with the OrderBy QueryKey.
    71  	PositionOrder = "position"
    72  )
    73  
    74  // Query is additional settings that can be passed to some requests that can
    75  // filter, sort, etc. the results.
    76  type Query struct {
    77  	Key    QueryKey
    78  	Values []string
    79  }
    80  
    81  // FormatQueryParameters converts a Query object into a collection that
    82  // cloudcontroller.Request can accept.
    83  func FormatQueryParameters(queries []Query) url.Values {
    84  	params := url.Values{}
    85  	for _, query := range queries {
    86  		params.Add(string(query.Key), strings.Join(query.Values, ","))
    87  	}
    88  
    89  	return params
    90  }