summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go')
-rw-r--r--vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go67
1 files changed, 0 insertions, 67 deletions
diff --git a/vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go b/vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go
deleted file mode 100644
index 62ab89a3a..000000000
--- a/vendor/github.com/uptrace/bun/dialect/pgdialect/hstore_scan.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package pgdialect
-
-import (
- "fmt"
- "reflect"
-
- "github.com/uptrace/bun/schema"
-)
-
-func hstoreScanner(typ reflect.Type) schema.ScannerFunc {
- kind := typ.Kind()
-
- switch kind {
- case reflect.Ptr:
- if fn := hstoreScanner(typ.Elem()); fn != nil {
- return schema.PtrScanner(fn)
- }
- case reflect.Map:
- // ok:
- default:
- return nil
- }
-
- if typ.Key() == stringType && typ.Elem() == stringType {
- return scanMapStringStringValue
- }
- return func(dest reflect.Value, src interface{}) error {
- return fmt.Errorf("bun: Hstore(unsupported %s)", dest.Type())
- }
-}
-
-func scanMapStringStringValue(dest reflect.Value, src interface{}) error {
- dest = reflect.Indirect(dest)
- if !dest.CanSet() {
- return fmt.Errorf("bun: Scan(non-settable %s)", dest.Type())
- }
-
- m, err := decodeMapStringString(src)
- if err != nil {
- return err
- }
-
- dest.Set(reflect.ValueOf(m))
- return nil
-}
-
-func decodeMapStringString(src interface{}) (map[string]string, error) {
- if src == nil {
- return nil, nil
- }
-
- b, err := toBytes(src)
- if err != nil {
- return nil, err
- }
-
- m := make(map[string]string)
-
- p := newHStoreParser(b)
- for p.Next() {
- m[p.Key()] = p.Value()
- }
- if err := p.Err(); err != nil {
- return nil, err
- }
- return m, nil
-}