package v2utils

import (
	opv2 "github.com/pingcap/tidb-operator/api/v2/core/v1alpha1"
	"k8s.io/apimachinery/pkg/api/meta"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func IsReady(conditions []metav1.Condition) bool {
	return meta.IsStatusConditionTrue(conditions, opv2.CondReady)
}

func IsSynced(conditions []metav1.Condition) bool {
	return meta.IsStatusConditionTrue(conditions, opv2.CondSynced)
}

func IsUpToDate(generation int64, status opv2.CommonStatus) bool {
	return status.CurrentRevision == status.UpdateRevision && generation == status.ObservedGeneration
}

func ReadyAndSynced(conditions []metav1.Condition) bool {
	return IsReady(conditions) && IsSynced(conditions)
}

func ReadyAndUpToDate(generation int64, status opv2.CommonStatus) bool {
	return IsReady(status.Conditions) && IsUpToDate(generation, status)
}
