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

package v1

// ServerApplyConfiguration represents an declarative configuration of the Server type for use
// with apply.
type ServerApplyConfiguration struct {
	Name          *string                          `json:"name,omitempty"`
	Zones         []string                         `json:"zones,omitempty"`
	ForwardPlugin *ForwardPluginApplyConfiguration `json:"forwardPlugin,omitempty"`
}

// ServerApplyConfiguration constructs an declarative configuration of the Server type for use with
// apply.
func Server() *ServerApplyConfiguration {
	return &ServerApplyConfiguration{}
}

// WithName sets the Name 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 Name field is set to the value of the last call.
func (b *ServerApplyConfiguration) WithName(value string) *ServerApplyConfiguration {
	b.Name = &value
	return b
}

// WithZones adds the given value to the Zones 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 Zones field.
func (b *ServerApplyConfiguration) WithZones(values ...string) *ServerApplyConfiguration {
	for i := range values {
		b.Zones = append(b.Zones, values[i])
	}
	return b
}

// WithForwardPlugin sets the ForwardPlugin 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 ForwardPlugin field is set to the value of the last call.
func (b *ServerApplyConfiguration) WithForwardPlugin(value *ForwardPluginApplyConfiguration) *ServerApplyConfiguration {
	b.ForwardPlugin = value
	return b
}
