| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 1 | package semver |
| 2 | |||||
| 3 | import ( | ||||
| 4 | "database/sql/driver" | ||||
| 5 | "fmt" | ||||
| 6 | ) | ||||
| 7 | |||||
| 8 | // Scan implements the database/sql.Scanner interface. | ||||
| 9 | func (v *Version) Scan(src interface{}) (err error) { | ||||
| Chris Bandy | f4dbd8b | 2014-12-18 06:41:14 | [diff] [blame] | 10 | var str string |
| 11 | switch src := src.(type) { | ||||
| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 12 | case string: |
| Chris Bandy | f4dbd8b | 2014-12-18 06:41:14 | [diff] [blame] | 13 | str = src |
| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 14 | case []byte: |
| Chris Bandy | f4dbd8b | 2014-12-18 06:41:14 | [diff] [blame] | 15 | str = string(src) |
| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 16 | default: |
| 17 | return fmt.Errorf("Version.Scan: cannot convert %T to string.", src) | ||||
| 18 | } | ||||
| 19 | |||||
| Chris Bandy | f4dbd8b | 2014-12-18 06:41:14 | [diff] [blame] | 20 | if t, err := Parse(str); err == nil { |
| 21 | *v = t | ||||
| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 22 | } |
| Chris Bandy | f4dbd8b | 2014-12-18 06:41:14 | [diff] [blame] | 23 | |
| tike | 272ed2e | 2014-09-17 14:23:31 | [diff] [blame] | 24 | return |
| 25 | } | ||||
| 26 | |||||
| 27 | // Value implements the database/sql/driver.Valuer interface. | ||||
| 28 | func (s Version) Value() (driver.Value, error) { | ||||
| 29 | return s.String(), nil | ||||
| 30 | } | ||||