first commit
This commit is contained in:
27
res_type/res_field_by_any.go
Normal file
27
res_type/res_field_by_any.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package res_type
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 解析map ----------------------------------
|
||||
type ResFieldByMap map[string]any
|
||||
|
||||
func (c *ResFieldByMap) Scan(value any) error {
|
||||
if value == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(value.([]byte), c); err != nil {
|
||||
return fmt.Errorf("ResFieldByMap json.Unmarshal Error, %s", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c ResFieldByMap) Value() (driver.Value, error) {
|
||||
b, err := json.Marshal(c)
|
||||
return string(b), err
|
||||
}
|
||||
3
res_type/res_field_by_float.go
Normal file
3
res_type/res_field_by_float.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package res_type
|
||||
|
||||
type ResFieldByFloat float64
|
||||
3
res_type/res_field_by_integer.go
Normal file
3
res_type/res_field_by_integer.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package res_type
|
||||
|
||||
type ResFieldByInteger int64
|
||||
38
res_type/res_field_by_map.go
Normal file
38
res_type/res_field_by_map.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package res_type
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 切片 ------------------------------------
|
||||
type ResFieldByAnys []any
|
||||
|
||||
func (c *ResFieldByAnys) Scan(value any) error {
|
||||
if value == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch v := value.(type) {
|
||||
case []byte:
|
||||
if len(v) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if rune('[') != rune(v[0]) {
|
||||
return nil
|
||||
}
|
||||
default:
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(value.([]byte), c); err != nil {
|
||||
return fmt.Errorf("ResFieldByAnys json.Unmarshal Error, %s, %s", value, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
func (c ResFieldByAnys) Value() (driver.Value, error) {
|
||||
b, err := json.Marshal(c)
|
||||
return string(b), err
|
||||
}
|
||||
29
res_type/res_field_by_number.go
Normal file
29
res_type/res_field_by_number.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package res_type
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
// Number 类型 --------------------------------
|
||||
type ResFieldByNumber float64
|
||||
|
||||
func (this *ResFieldByNumber) Scan(value any) error {
|
||||
if value == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch s := value.(type) {
|
||||
case []byte:
|
||||
*this = ResFieldByNumber(cast.ToFloat64(string(s)))
|
||||
default:
|
||||
*this = ResFieldByNumber(cast.ToFloat64(s))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (this ResFieldByNumber) Value() (driver.Value, error) {
|
||||
return this, nil
|
||||
}
|
||||
28
res_type/res_field_by_string.go
Normal file
28
res_type/res_field_by_string.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package res_type
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 字符串 -------------------------------------
|
||||
type ResFieldByString string
|
||||
|
||||
func (this *ResFieldByString) Scan(value any) error {
|
||||
if value == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch s := value.(type) {
|
||||
case []byte:
|
||||
*this = ResFieldByString(s)
|
||||
default:
|
||||
*this = ResFieldByString(fmt.Sprintf("%v", s))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c ResFieldByString) Value() (driver.Value, error) {
|
||||
return c, nil
|
||||
}
|
||||
Reference in New Issue
Block a user