package route53

import (
	"errors"

	"github.com/StackExchange/dnscontrol/v4/models"
	"github.com/StackExchange/dnscontrol/v4/pkg/rejectif"
)

// AuditRecords returns a list of errors corresponding to the records
// that aren't supported by this provider.  If all records are
// supported, an empty list is returned.
func AuditRecords(records []*models.RecordConfig) []error {
	a := rejectif.Auditor{}

	a.Add("R53_ALIAS", rejectifTargetEqualsLabel) // Last verified 2023-03-01

	return a.Audit(records)
}

// Normally this kind of function would be put in `pkg/rejectif` but
// since this is ROUTE53-specific, we'll include it here.

// rejectifTargetEqualsLabel rejects an ALIAS that would create a loop.

func rejectifTargetEqualsLabel(rc *models.RecordConfig) error {
	if (rc.GetLabelFQDN() + ".") == rc.GetTargetField() {
		return errors.New("alias target loop")
	}
	return nil
}
