package domain

import "fmt"

func ValidateUUID(field, value string) error {
	if len(value) != 36 {
		return fmt.Errorf("%w: %s must be a UUID", ErrValidation, field)
	}

	for i, r := range value {
		switch i {
		case 8, 13, 18, 23:
			if r != '-' {
				return fmt.Errorf("%w: %s must be a UUID", ErrValidation, field)
			}
		default:
			if !isHex(r) {
				return fmt.Errorf("%w: %s must be a UUID", ErrValidation, field)
			}
		}
	}

	return nil
}

func isHex(r rune) bool {
	return (r >= '0' && r <= '9') ||
		(r >= 'a' && r <= 'f') ||
		(r >= 'A' && r <= 'F')
}
