// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package static import "github.com/hashicorp/boundary/internal/pagination" // getOpts - iterate the inbound Options and return a struct func getOpts(opt ...Option) options { opts := getDefaultOptions() for _, o := range opt { o(&opts) } return opts } // Option - how Options are passed as arguments. type Option func(*options) // options = how options are represented type options struct { withName string withDescription string withLimit int withAddress string withPublicId string withStartPageAfterItem pagination.Item } func getDefaultOptions() options { return options{ withDescription: "", withName: "", withAddress: "", } } // WithDescription provides an optional description. func WithDescription(desc string) Option { return func(o *options) { o.withDescription = desc } } // WithName provides an optional name. func WithName(name string) Option { return func(o *options) { o.withName = name } } // WithLimit provides an option to provide a limit. Intentionally allowing // negative integers. If WithLimit < 0, then unlimited results are // returned. If WithLimit == 0, then default limits are used for results. func WithLimit(l int) Option { return func(o *options) { o.withLimit = l } } // WithAddress provides an optional address. func WithAddress(address string) Option { return func(o *options) { o.withAddress = address } } // WithPublicId provides an optional public id func WithPublicId(id string) Option { return func(o *options) { o.withPublicId = id } } // WithStartPageAfterItem is used to paginate over the results. // The next page will start after the provided item. func WithStartPageAfterItem(item pagination.Item) Option { return func(o *options) { o.withStartPageAfterItem = item } }