Files
platform/web/globals/orm/inet.go

33 lines
525 B
Go

package orm
import (
"database/sql/driver"
"fmt"
"net/netip"
)
type Inet struct {
netip.Addr
}
func (inet Inet) Value() (driver.Value, error) {
return inet.MarshalBinary()
}
func (inet *Inet) Scan(value any) (err error) {
switch value := value.(type) {
case []byte:
return inet.UnmarshalBinary(value)
default:
return fmt.Errorf("不支持的类型: %T", value)
}
}
func ParseInet(ip string) (*Inet, error) {
addr, err := netip.ParseAddr(ip)
if err != nil {
return nil, err
}
return &Inet{addr}, nil
}