// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1

// DeveloperConsoleCatalogCategoryApplyConfiguration represents a declarative configuration of the DeveloperConsoleCatalogCategory type for use
// with apply.
//
// DeveloperConsoleCatalogCategory for the developer console catalog.
type DeveloperConsoleCatalogCategoryApplyConfiguration struct {
	// defines top level category ID, label and filter tags.
	DeveloperConsoleCatalogCategoryMetaApplyConfiguration `json:",inline"`
	// subcategories defines a list of child categories.
	Subcategories []DeveloperConsoleCatalogCategoryMetaApplyConfiguration `json:"subcategories,omitempty"`
}

// DeveloperConsoleCatalogCategoryApplyConfiguration constructs a declarative configuration of the DeveloperConsoleCatalogCategory type for use with
// apply.
func DeveloperConsoleCatalogCategory() *DeveloperConsoleCatalogCategoryApplyConfiguration {
	return &DeveloperConsoleCatalogCategoryApplyConfiguration{}
}

// WithID sets the ID field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ID field is set to the value of the last call.
func (b *DeveloperConsoleCatalogCategoryApplyConfiguration) WithID(value string) *DeveloperConsoleCatalogCategoryApplyConfiguration {
	b.DeveloperConsoleCatalogCategoryMetaApplyConfiguration.ID = &value
	return b
}

// WithLabel sets the Label field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Label field is set to the value of the last call.
func (b *DeveloperConsoleCatalogCategoryApplyConfiguration) WithLabel(value string) *DeveloperConsoleCatalogCategoryApplyConfiguration {
	b.DeveloperConsoleCatalogCategoryMetaApplyConfiguration.Label = &value
	return b
}

// WithTags adds the given value to the Tags field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Tags field.
func (b *DeveloperConsoleCatalogCategoryApplyConfiguration) WithTags(values ...string) *DeveloperConsoleCatalogCategoryApplyConfiguration {
	for i := range values {
		b.DeveloperConsoleCatalogCategoryMetaApplyConfiguration.Tags = append(b.DeveloperConsoleCatalogCategoryMetaApplyConfiguration.Tags, values[i])
	}
	return b
}

// WithSubcategories adds the given value to the Subcategories field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Subcategories field.
func (b *DeveloperConsoleCatalogCategoryApplyConfiguration) WithSubcategories(values ...*DeveloperConsoleCatalogCategoryMetaApplyConfiguration) *DeveloperConsoleCatalogCategoryApplyConfiguration {
	for i := range values {
		if values[i] == nil {
			panic("nil value passed to WithSubcategories")
		}
		b.Subcategories = append(b.Subcategories, *values[i])
	}
	return b
}
