forked from ebhomengo/niki
1
0
Fork 0
niki/vendor/github.com/redis/go-redis/v9/internal/arg.go

104 lines
1.3 KiB
Go
Raw Normal View History

2024-02-18 10:42:21 +00:00
package internal
import (
"fmt"
"strconv"
"time"
"github.com/redis/go-redis/v9/internal/util"
)
func AppendArg(b []byte, v interface{}) []byte {
2024-02-18 10:42:21 +00:00
switch v := v.(type) {
2024-02-18 10:42:21 +00:00
case nil:
2024-02-18 10:42:21 +00:00
return append(b, "<nil>"...)
2024-02-18 10:42:21 +00:00
case string:
2024-02-18 10:42:21 +00:00
return appendUTF8String(b, util.StringToBytes(v))
2024-02-18 10:42:21 +00:00
case []byte:
2024-02-18 10:42:21 +00:00
return appendUTF8String(b, v)
2024-02-18 10:42:21 +00:00
case int:
2024-02-18 10:42:21 +00:00
return strconv.AppendInt(b, int64(v), 10)
2024-02-18 10:42:21 +00:00
case int8:
2024-02-18 10:42:21 +00:00
return strconv.AppendInt(b, int64(v), 10)
2024-02-18 10:42:21 +00:00
case int16:
2024-02-18 10:42:21 +00:00
return strconv.AppendInt(b, int64(v), 10)
2024-02-18 10:42:21 +00:00
case int32:
2024-02-18 10:42:21 +00:00
return strconv.AppendInt(b, int64(v), 10)
2024-02-18 10:42:21 +00:00
case int64:
2024-02-18 10:42:21 +00:00
return strconv.AppendInt(b, v, 10)
2024-02-18 10:42:21 +00:00
case uint:
2024-02-18 10:42:21 +00:00
return strconv.AppendUint(b, uint64(v), 10)
2024-02-18 10:42:21 +00:00
case uint8:
2024-02-18 10:42:21 +00:00
return strconv.AppendUint(b, uint64(v), 10)
2024-02-18 10:42:21 +00:00
case uint16:
2024-02-18 10:42:21 +00:00
return strconv.AppendUint(b, uint64(v), 10)
2024-02-18 10:42:21 +00:00
case uint32:
2024-02-18 10:42:21 +00:00
return strconv.AppendUint(b, uint64(v), 10)
2024-02-18 10:42:21 +00:00
case uint64:
2024-02-18 10:42:21 +00:00
return strconv.AppendUint(b, v, 10)
2024-02-18 10:42:21 +00:00
case float32:
2024-02-18 10:42:21 +00:00
return strconv.AppendFloat(b, float64(v), 'f', -1, 64)
2024-02-18 10:42:21 +00:00
case float64:
2024-02-18 10:42:21 +00:00
return strconv.AppendFloat(b, v, 'f', -1, 64)
2024-02-18 10:42:21 +00:00
case bool:
2024-02-18 10:42:21 +00:00
if v {
2024-02-18 10:42:21 +00:00
return append(b, "true"...)
2024-02-18 10:42:21 +00:00
}
2024-02-18 10:42:21 +00:00
return append(b, "false"...)
2024-02-18 10:42:21 +00:00
case time.Time:
2024-02-18 10:42:21 +00:00
return v.AppendFormat(b, time.RFC3339Nano)
2024-02-18 10:42:21 +00:00
default:
2024-02-18 10:42:21 +00:00
return append(b, fmt.Sprint(v)...)
2024-02-18 10:42:21 +00:00
}
2024-02-18 10:42:21 +00:00
}
func appendUTF8String(dst []byte, src []byte) []byte {
2024-02-18 10:42:21 +00:00
dst = append(dst, src...)
2024-02-18 10:42:21 +00:00
return dst
2024-02-18 10:42:21 +00:00
}