package reflection import ( "reflect" "time" "gitlab.com/uafrica/go-utils/logs" ) func SetPointerTime(field reflect.Value, value *time.Time) { if !isFieldValid(field, false) { return // Field doesn't exist } if field.Kind() != reflect.Ptr { logs.LogErrorMessageText("Field need to be *Field") return } field.Set(reflect.ValueOf(value)) } func SetInt64(field reflect.Value, value int64) { if !isFieldValid(field, false) { return // Field doesn't exist } if field.Kind() != reflect.Int64 { logs.LogErrorMessageText("Claims: Field is not of type Int64") return } if field.OverflowInt(value) { logs.LogErrorMessageText("Claims: Int overflow") return } field.SetInt(value) } func SetPointerInt64(field reflect.Value, value *int64) { if !isFieldValid(field, false) { return // Field doesn't exist } if field.Kind() != reflect.Ptr { logs.LogErrorMessageText("Field need to be *Int64") return } field.Set(reflect.ValueOf(value)) } func SetString(field reflect.Value, value string) { if !isFieldValid(field, false) { return // Field doesn't exist } if field.Kind() != reflect.String { return } field.SetString(value) } func GetStringValue(field reflect.Value) string { if !isFieldValid(field, true) { return "" } if field.Kind() == reflect.String { return field.String() } if field.Kind() == reflect.Ptr && !field.IsNil() { return field.Elem().String() } return "" } func GetInt64Value(field reflect.Value) int64 { if !isFieldValid(field, true) { return 0 } if field.Kind() == reflect.Int64 { return field.Int() } return 0 } func isFieldValid(field reflect.Value, readonly bool) bool { if readonly { return field.IsValid() } return field.IsValid() && field.CanSet() } func SetPointerString(field reflect.Value, value *string) { if !isFieldValid(field, false) { return // Field doesn't exist } if field.Kind() != reflect.Ptr { return } field.Set(reflect.ValueOf(value)) }