package common

import (
	"fmt"
	retry "github.com/avast/retry-go/v4"
)

// ValidateExportState normalizes the state values returned by Console and
// OpenAPI adapters. Lifecycle cases additionally assert that their unique
// prefix contains non-empty objects, then delete and verify that prefix.
func ValidateExportState(state string) error {
	switch state {
	case "SUCCEEDED":
		return nil
	case "FAILED", "CANCELED", "CANCELLED", "DELETED", "EXPIRED":
		return retry.Unrecoverable(fmt.Errorf("export reached terminal failure state %s", state))
	default:
		return fmt.Errorf("export still %s", state)
	}
}
