chatdesk-ui/auth_v2.169.0/internal/models/json_map.go

37 lines
629 B
Go

package models
import (
"database/sql/driver"
"encoding/json"
"errors"
)
type JSONMap map[string]interface{}
func (j JSONMap) Value() (driver.Value, error) {
data, err := json.Marshal(j)
if err != nil {
return driver.Value(""), err
}
return driver.Value(string(data)), nil
}
func (j JSONMap) Scan(src interface{}) error {
var source []byte
switch v := src.(type) {
case string:
source = []byte(v)
case []byte:
source = v
case nil:
source = []byte("")
default:
return errors.New("invalid data type for JSONMap")
}
if len(source) == 0 {
source = []byte("{}")
}
return json.Unmarshal(source, &j)
}