2022-01-24 16:59:48 +01:00

34 lines
657 B
Go

package main
import (
"database/sql/driver"
"encoding/json"
"errors"
"gorm.io/gorm"
)
type Dude struct {
gorm.Model
Name string `gorm:"type:varchar(50)" json:"name"`
Email string `gorm:"type:varchar(50)" json:"email"`
Metadata JSONB `gorm:"type:jsonb" json:"metadata"`
}
// JSONB Interface for JSONB Field of Dude Table
type JSONB map[string]interface{}
// Value Marshal
func (a JSONB) Value() (driver.Value, error) {
return json.Marshal(a)
}
// Scan Unmarshal
func (a *JSONB) Scan(value interface{}) error {
b, ok := value.([]byte)
if !ok {
return errors.New("type assertion to []byte failed")
}
return json.Unmarshal(b, &a)
}