blob: b8d4b6a11dc28190ddd4817bcfbb45091c417f14 [file] [log] [blame]
tike272ed2e2014-09-17 14:23:311package semver
2
3import (
4 "database/sql/driver"
5 "fmt"
6)
7
8// Scan implements the database/sql.Scanner interface.
9func (v *Version) Scan(src interface{}) (err error) {
Chris Bandyf4dbd8b2014-12-18 06:41:1410 var str string
11 switch src := src.(type) {
tike272ed2e2014-09-17 14:23:3112 case string:
Chris Bandyf4dbd8b2014-12-18 06:41:1413 str = src
tike272ed2e2014-09-17 14:23:3114 case []byte:
Chris Bandyf4dbd8b2014-12-18 06:41:1415 str = string(src)
tike272ed2e2014-09-17 14:23:3116 default:
17 return fmt.Errorf("Version.Scan: cannot convert %T to string.", src)
18 }
19
Chris Bandyf4dbd8b2014-12-18 06:41:1420 if t, err := Parse(str); err == nil {
21 *v = t
tike272ed2e2014-09-17 14:23:3122 }
Chris Bandyf4dbd8b2014-12-18 06:41:1423
tike272ed2e2014-09-17 14:23:3124 return
25}
26
27// Value implements the database/sql/driver.Valuer interface.
28func (s Version) Value() (driver.Value, error) {
29 return s.String(), nil
30}