package utils

import (
	"reflect"
)

func IsZero(value reflect.Value) bool {
	for i := 0; i < value.NumField(); i++ {
		field := value.Field(i)
		if !IsFieldEmpty(field) {
			return false
		}
	}
	return true
}

func IsFieldEmpty(field reflect.Value) bool {
	switch field.Kind() {
	case reflect.Slice, reflect.Map, reflect.Array, reflect.String:
		return field.Len() == 0
	default:
		return reflect.DeepEqual(field.Interface(), reflect.Zero(field.Type()).Interface())
	}
}
