package resource

// MySQLNode is the MySQL workloadNode wrapper
type MySQLNode struct {
	ResourceHandle `json:",inline"`
	Spec           MySQLNodeSpec      `json:"spec"`
	Status         WorkloadNodeStatus `json:"status,omitempty"`
}

type MySQLNodeSpec struct {
	Image            string               `json:"image"`
	Env              map[string]string    `json:"env,omitempty"`
	Port             int32                `json:"port"`
	Resources        ResourceRequirements `json:"resources,omitempty"`
	VolumeMount      VolumeMount          `json:"volumeMount,omitempty"`
	StorageClassName *string              `json:"storageClassName,omitempty"`
	LivenessProbe    *Probe               `json:"livenessProbe,omitempty"`
	ReadinessProbe   *Probe               `json:"readinessProbe,omitempty"`
}

func (n MySQLNode) BuildWorkload() WorkloadNode {
	return WorkloadNode{
		ResourceHandle: n.ResourceHandle,
		Spec: WorkloadNodeSpec{
			Container: WorkloadUnit{
				Name:             "mysql",
				Env:              n.Spec.Env,
				Image:            n.Spec.Image,
				Resources:        n.Spec.Resources,
				Port:             n.Spec.Port,
				StorageClassName: n.Spec.StorageClassName,
				VolumeMount:      n.Spec.VolumeMount,
				LivenessProbe:    n.Spec.LivenessProbe,
				ReadinessProbe:   n.Spec.ReadinessProbe,
			},
		},
	}
}
