package validation

import (
	"slices"

	auditent "github.com/tidbcloud/devops/entity/audit"
)

var (
	AuditLog = auditLogValidator{}
)

type auditLogValidator struct{}

func (v auditLogValidator) AuditLog(adtLog *auditent.AuditLog) error {
	if adtLog == nil {
		return ErrRequired("audit log")
	}

	if !slices.Contains(auditent.AuditLogTypeValues, adtLog.Type) {
		return ErrInvalid("audit log type", adtLog.Type)
	}

	if adtLog.ObjectID == "" {
		return ErrRequired("object id")
	}

	if adtLog.Operator == "" {
		return ErrRequired("operator")
	}

	if adtLog.Operation == "" {
		return ErrRequired("operation")
	}

	return nil
}
