package server

import (
	apiv1 "github.com/tidbcloud/cluster-service-ng/api/cluster-service-ng/v1beta"
	"github.com/tidbcloud/cluster-service-ng/domain/entity"
)

const (
	defaultRestoreFailureCode    = "REGIONAL_FAILURE_UNSPECIFIED"
	defaultRestoreFailureMessage = "restore failed in regional control plane"
)

func restoreFailureOutput(source, code, message string) *apiv1.RestoreFailure {
	failureSource := apiv1.RestoreFailureSource_RESTORE_FAILURE_SOURCE_UNSPECIFIED
	switch source {
	case "":
		// Empty source is expected for records created before failure metadata
		// was persisted; preserve the legacy control-plane default.
		failureSource = apiv1.RestoreFailureSource_CONTROL_PLANE
	case entity.RestoreFailureSourceKernel:
		failureSource = apiv1.RestoreFailureSource_KERNEL
	case entity.RestoreFailureSourceControlPlane:
		failureSource = apiv1.RestoreFailureSource_CONTROL_PLANE
	}
	if code == "" {
		code = defaultRestoreFailureCode
	}
	if message == "" {
		message = defaultRestoreFailureMessage
	}
	return &apiv1.RestoreFailure{Source: failureSource, Code: code, Message: message}
}
