Skip to content

Commit f8e0d5e

Browse files
authored
Add support type for net/netip.Addr and net/netip.Prefix (#1028)
* feat(schema): add support type for net/netip.Addr and net/netip.Prefix * fix(schema): net.IPNet(not ptr) is not implement fmt.Stringer
1 parent 760de7d commit f8e0d5e

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

schema/append_value.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,10 @@ func appender(dialect Dialect, typ reflect.Type) AppenderFunc {
9999
return appendTimeValue
100100
case timePtrType:
101101
return PtrAppender(appendTimeValue)
102-
case ipType:
103-
return appendIPValue
104102
case ipNetType:
105103
return appendIPNetValue
104+
case ipType, netipPrefixType, netipAddrType:
105+
return appendStringer
106106
case jsonRawMessageType:
107107
return appendJSONRawMessageValue
108108
}
@@ -247,16 +247,15 @@ func appendTimeValue(fmter Formatter, b []byte, v reflect.Value) []byte {
247247
return fmter.Dialect().AppendTime(b, tm)
248248
}
249249

250-
func appendIPValue(fmter Formatter, b []byte, v reflect.Value) []byte {
251-
ip := v.Interface().(net.IP)
252-
return fmter.Dialect().AppendString(b, ip.String())
253-
}
254-
255250
func appendIPNetValue(fmter Formatter, b []byte, v reflect.Value) []byte {
256251
ipnet := v.Interface().(net.IPNet)
257252
return fmter.Dialect().AppendString(b, ipnet.String())
258253
}
259254

255+
func appendStringer(fmter Formatter, b []byte, v reflect.Value) []byte {
256+
return fmter.Dialect().AppendString(b, v.Interface().(fmt.Stringer).String())
257+
}
258+
260259
func appendJSONRawMessageValue(fmter Formatter, b []byte, v reflect.Value) []byte {
261260
bytes := v.Bytes()
262261
if bytes == nil {

schema/reflect.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"database/sql/driver"
55
"encoding/json"
66
"net"
7+
"net/netip"
78
"reflect"
89
"time"
910
)
@@ -14,6 +15,8 @@ var (
1415
timeType = timePtrType.Elem()
1516
ipType = reflect.TypeOf((*net.IP)(nil)).Elem()
1617
ipNetType = reflect.TypeOf((*net.IPNet)(nil)).Elem()
18+
netipPrefixType = reflect.TypeOf((*netip.Prefix)(nil)).Elem()
19+
netipAddrType = reflect.TypeOf((*netip.Addr)(nil)).Elem()
1720
jsonRawMessageType = reflect.TypeOf((*json.RawMessage)(nil)).Elem()
1821

1922
driverValuerType = reflect.TypeOf((*driver.Valuer)(nil)).Elem()

0 commit comments

Comments
 (0)