add JSONB type (#1626)

* add JSONB type

* add comments to satisfy gofmt
This commit is contained in:
Aetheus 2017-10-10 21:28:39 +08:00 committed by Jinzhu
parent 9c9de89686
commit 0a51f6cdc5
1 changed files with 23 additions and 0 deletions

View File

@ -6,6 +6,9 @@ import (
_ "github.com/lib/pq"
"github.com/lib/pq/hstore"
"encoding/json"
"errors"
"fmt"
)
type Hstore map[string]*string
@ -52,3 +55,23 @@ func (h *Hstore) Scan(value interface{}) error {
return nil
}
// Jsonb Postgresql's JSONB data type
type Jsonb struct {
json.RawMessage
}
// Value get value of Jsonb
func (j Jsonb) Value() (driver.Value, error) {
return j.MarshalJSON()
}
// Scan scan value into Jsonb
func (j *Jsonb) Scan(value interface{}) error {
bytes, ok := value.([]byte)
if !ok {
return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
}
return json.Unmarshal(bytes, j)
}