package common

import "reflect"

// Must panics if err is not nil.
func Must(err error) {
	if err != nil {
		panic(err)
	}
}

// Must2 panics if the second parameter is not nil, otherwise returns the first parameter.
func Must2(v interface{}, err error) interface{} {
	Must(err)
	return v
}

// Error2 returns the err from the 2nd parameter.
func Error2(v interface{}, err error) error {
	return err
}

// CloseIfExists call obj.Close() if obj is not nil.
func CloseIfExists(obj any) error {
	if obj != nil {
		v := reflect.ValueOf(obj)
		if !v.IsNil() {
			return Close(obj)
		}
	}
	return nil
}
