ducky/devices
2016-01-02
Parent:a700ede02f91
ducky/devices/vendor/code.secondbit.org/pqarrays.hg/array.go
Update trout to fix routing bug. Update to tip on trout to fix the routing bug that was causing us such issues. See the commit message of trout at 3df515f0cec5 for more details.
1 package pqarrays
3 import (
4 "database/sql/driver"
5 "errors"
6 "strconv"
7 "strings"
8 )
10 var (
11 ErrUnexpectedValueType = errors.New("expected value to be a string or []byte")
12 )
14 type StringArray []string
16 func (s StringArray) Value() (driver.Value, error) {
17 output := make([]string, 0, len(s))
18 for _, item := range s {
19 item = strconv.Quote(item)
20 item = strings.Replace(item, "'", "\\'", -1)
21 output = append(output, item)
22 }
23 return []byte(`{` + strings.Join(output, ",") + `}`), nil
24 }
26 func (s *StringArray) Scan(value interface{}) error {
27 *s = (*s)[:0]
28 var input string
29 if _, ok := value.(string); ok {
30 input = value.(string)
31 } else if _, ok := value.([]byte); ok {
32 input = string(value.([]byte))
33 } else {
34 return ErrUnexpectedValueType
35 }
36 l := lex(input)
37 parsed, err := parse(l)
38 if err != nil {
39 return err
40 }
41 for _, item := range parsed {
42 if item == nil {
43 continue
44 }
45 *s = append(*s, *item)
46 }
47 return nil
48 }