package schema

import (
	
	
	

	

	
	
)

func ( Formatter,  []byte,  interface{},  CustomAppender) []byte {
	switch v := .(type) {
	case nil:
		return dialect.AppendNull()
	case bool:
		return dialect.AppendBool(, )
	case int:
		return strconv.AppendInt(, int64(), 10)
	case int32:
		return strconv.AppendInt(, int64(), 10)
	case int64:
		return strconv.AppendInt(, , 10)
	case uint:
		return strconv.AppendUint(, uint64(), 10)
	case uint32:
		return strconv.AppendUint(, uint64(), 10)
	case uint64:
		return strconv.AppendUint(, , 10)
	case float32:
		return dialect.AppendFloat32(, )
	case float64:
		return dialect.AppendFloat64(, )
	case string:
		return dialect.AppendString(, )
	case time.Time:
		return dialect.AppendTime(, )
	case []byte:
		return dialect.AppendBytes(, )
	case QueryAppender:
		return AppendQueryAppender(, , )
	default:
		 := reflect.ValueOf()
		if .Kind() == reflect.Ptr && .IsNil() {
			return dialect.AppendNull()
		}
		 := Appender(.Type(), )
		return (, , )
	}
}

func ( Formatter,  []byte,  reflect.Value) []byte {
	 := internal.NewHexEncoder()

	 := msgpack.GetEncoder()
	defer msgpack.PutEncoder()

	.Reset()
	if  := .EncodeValue();  != nil {
		return dialect.AppendError(, )
	}

	if  := .Close();  != nil {
		return dialect.AppendError(, )
	}

	return .Bytes()
}

func ( Formatter,  []byte,  QueryAppender) []byte {
	,  := .AppendQuery(, )
	if  != nil {
		return dialect.AppendError(, )
	}
	return 
}