...
1 package pgtype
2
3 import (
4 "database/sql/driver"
5 "errors"
6 )
7
8 func DatabaseSQLValue(ci *ConnInfo, src Value) (interface{}, error) {
9 if valuer, ok := src.(driver.Valuer); ok {
10 return valuer.Value()
11 }
12
13 if textEncoder, ok := src.(TextEncoder); ok {
14 buf, err := textEncoder.EncodeText(ci, nil)
15 if err != nil {
16 return nil, err
17 }
18 return string(buf), nil
19 }
20
21 if binaryEncoder, ok := src.(BinaryEncoder); ok {
22 buf, err := binaryEncoder.EncodeBinary(ci, nil)
23 if err != nil {
24 return nil, err
25 }
26 return buf, nil
27 }
28
29 return nil, errors.New("cannot convert to database/sql compatible value")
30 }
31
32 func EncodeValueText(src TextEncoder) (interface{}, error) {
33 buf, err := src.EncodeText(nil, make([]byte, 0, 32))
34 if err != nil {
35 return nil, err
36 }
37 if buf == nil {
38 return nil, nil
39 }
40 return string(buf), err
41 }
42
View as plain text