* Kill gorp

Gorp is dead. Long live Gorp.

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2022-03-15 19:49:19 +05:30
коммит произвёл GitHub
родитель c3ec0a145b
Коммит 4da98cb51a
47 изменённых файлов: 102 добавлений и 5179 удалений

Просмотреть файл

@@ -6,17 +6,11 @@ package sqlstore
import (
"bytes"
"database/sql/driver"
"encoding/json"
"fmt"
"strconv"
"strings"
"github.com/dyatlov/go-opengraph/opengraph"
"github.com/mattermost/gorp"
"github.com/mattermost/mattermost-server/v6/model"
"github.com/mattermost/mattermost-server/v6/shared/i18n"
"github.com/mattermost/mattermost-server/v6/shared/mlog"
"github.com/pkg/errors"
)
type jsonArray []string
@@ -68,85 +62,3 @@ func (t *TraceOnAdapter) Printf(format string, v ...interface{}) {
type JSONSerializable interface {
ToJSON() string
}
type mattermConverter struct{}
func (me mattermConverter) ToDb(val interface{}) (interface{}, error) {
switch t := val.(type) {
case model.StringMap:
return model.MapToJSON(t), nil
case map[string]string:
return model.MapToJSON(model.StringMap(t)), nil
case model.StringArray:
return model.ArrayToJSON(t), nil
case model.StringInterface:
return model.StringInterfaceToJSON(t), nil
case map[string]interface{}:
return model.StringInterfaceToJSON(model.StringInterface(t)), nil
case JSONSerializable:
return t.ToJSON(), nil
case *opengraph.OpenGraph:
return json.Marshal(t)
case *model.PostImage:
return json.Marshal(t)
}
return val, nil
}
func (me mattermConverter) FromDb(target interface{}) (gorp.CustomScanner, bool) {
switch target.(type) {
case *model.StringMap:
binder := func(holder, target interface{}) error {
s, ok := holder.(*string)
if !ok {
return errors.New(i18n.T("store.sql.convert_string_map"))
}
b := []byte(*s)
return json.Unmarshal(b, target)
}
return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *map[string]string:
binder := func(holder, target interface{}) error {
s, ok := holder.(*string)
if !ok {
return errors.New(i18n.T("store.sql.convert_string_map"))
}
b := []byte(*s)
return json.Unmarshal(b, target)
}
return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *model.StringArray:
binder := func(holder, target interface{}) error {
s, ok := holder.(*string)
if !ok {
return errors.New(i18n.T("store.sql.convert_string_array"))
}
b := []byte(*s)
return json.Unmarshal(b, target)
}
return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *model.StringInterface:
binder := func(holder, target interface{}) error {
s, ok := holder.(*string)
if !ok {
return errors.New(i18n.T("store.sql.convert_string_interface"))
}
b := []byte(*s)
return json.Unmarshal(b, target)
}
return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
case *map[string]interface{}:
binder := func(holder, target interface{}) error {
s, ok := holder.(*string)
if !ok {
return errors.New(i18n.T("store.sql.convert_string_interface"))
}
b := []byte(*s)
return json.Unmarshal(b, target)
}
return gorp.CustomScanner{Holder: new(string), Target: target, Binder: binder}, true
}
return gorp.CustomScanner{}, false
}