package v1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

type Conditions []metav1.Condition

func (c *Conditions) SetCondition(condition *metav1.Condition) {
	if condition.Type == "" {
		return
	}
	currentCond, idx := c.GetCondition(condition.Type)
	if currentCond != nil && currentCond.Status == condition.Status && currentCond.Reason == condition.Reason && currentCond.Message == condition.Message {
		return
	}
	if idx != nil {
		(*c)[*idx] = *condition
	} else {
		*c = append(*c, *condition)
	}
}

func (c *Conditions) GetConditionEqualsTo(conditionType string, expected metav1.ConditionStatus) bool {
	condition, _ := c.GetCondition(conditionType)
	if condition == nil {
		return false
	}
	return condition.Status == expected
}

func (c *Conditions) GetCondition(conditionType string) (*metav1.Condition, *int) {
	for idx, cond := range *c {
		if cond.Type == conditionType {
			return &cond, &idx
		}
	}
	return nil, nil
}
