func (setting Setting) Value() (driver.Value, error) {
	result, err := json.Marshal(setting)
	return string(result), err
}
Value get value from struct, and save into database
package seo
import (
	"bytes"
	"database/sql/driver"
	"encoding/json"
	"html/template"
	"log"
	"net/url"
	"time"
	"github.com/qor/admin"
	"github.com/qor/media/media_library"
	"github.com/qor/qor"
	"github.com/qor/qor/resource"
)
type QorSEOSettingInterface interface {
	GetName() string
	SetName(string)
	GetSEOSetting() Setting
	GetGlobalSetting() map[string]string
	SetGlobalSetting(map[string]string)
	GetSEOType() string
	SetSEOType(string)
	GetIsGlobalSEO() bool
	SetIsGlobalSEO(bool)
	GetTitle() string
	GetDescription() string
	GetKeywords() string
	SetCollection(*Collection)
	GetOpenGraphTitle() string
	GetOpenGraphDescription() string
	GetOpenGraphURL() string
	GetOpenGraphType() string
	GetOpenGraphImageURL() string
	GetOpenGraphImageFromMediaLibrary() media_library.MediaBox
	GetOpenGraphMetadata() []OpenGraphMetadata
}
type QorSEOSetting struct {
	Name        string `gorm:"primary_key"`
	Setting     Setting
	IsGlobalSEO bool
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt *time.Time `gorm:"index"`
	collection *Collection
}
type Setting struct {
	Title                          string `gorm:"size:4294967295"`
	Description                    string
	Keywords                       string
	Type                           string
	OpenGraphTitle                 string
	OpenGraphDescription           string
	OpenGraphURL                   string
	OpenGraphType                  string
	OpenGraphImageURL              string
	OpenGraphImageFromMediaLibrary media_library.MediaBox
	OpenGraphMetadata              []OpenGraphMetadata
	EnabledCustomize               bool
	GlobalSetting                  map[string]string
}
type OpenGraphMetadata struct {
	Property string
	Content  string
}
func (s QorSEOSetting) GetSEOSetting() Setting {
	return s.Setting
}
func (s QorSEOSetting) GetName() string {
	return s.Name
}
func (s *QorSEOSetting) SetName(name string) {
	s.Name = name
}
func (s QorSEOSetting) GetSEOType() string {
	return s.Setting.Type
}
func (s *QorSEOSetting) SetSEOType(t string) {
	s.Setting.Type = t
}
func (s QorSEOSetting) GetIsGlobalSEO() bool {
	return s.IsGlobalSEO
}
func (s *QorSEOSetting) SetIsGlobalSEO(isGlobal bool) {
	s.IsGlobalSEO = isGlobal
}
func (s QorSEOSetting) GetGlobalSetting() map[string]string {
	return s.Setting.GlobalSetting
}
func (s *QorSEOSetting) SetGlobalSetting(globalSetting map[string]string) {
	s.Setting.GlobalSetting = globalSetting
}
func (s QorSEOSetting) GetOpenGraphTitle() string {
	return s.Setting.OpenGraphTitle
}
func (s QorSEOSetting) GetOpenGraphDescription() string {
	return s.Setting.OpenGraphDescription
}
func (s QorSEOSetting) GetOpenGraphURL() string {
	return s.Setting.OpenGraphURL
}
func (s QorSEOSetting) GetOpenGraphType() string {
	return s.Setting.OpenGraphType
}
func (s QorSEOSetting) GetOpenGraphImageURL() string {
	return s.Setting.OpenGraphImageURL
}
func (s QorSEOSetting) GetOpenGraphImageFromMediaLibrary() media_library.MediaBox {
	return s.Setting.OpenGraphImageFromMediaLibrary
}
func (s QorSEOSetting) GetOpenGraphMetadata() []OpenGraphMetadata {
	return s.Setting.OpenGraphMetadata
}
func (s QorSEOSetting) GetTitle() string {
	return s.Setting.Title
}
func (s QorSEOSetting) GetDescription() string {
	return s.Setting.Description
}
func (s QorSEOSetting) GetKeywords() string {
	return s.Setting.Keywords
}
func (s *QorSEOSetting) SetCollection(collection *Collection) {
	s.collection = collection
}
func (s QorSEOSetting) GetSEO() *SEO {
	return s.collection.GetSEO(s.Name)
}
func (setting *Setting) Scan(value interface{}) error {
	if bytes, ok := value.([]byte); ok {
		json.Unmarshal(bytes, setting)
	} else if str, ok := value.(string); ok {
		json.Unmarshal([]byte(str), setting)
	} else if strs, ok := value.([]string); ok {
		for _, str := range strs {
			json.Unmarshal([]byte(str), setting)
		}
	}
	return nil
}