diff options
| author | Christine Dodrill <me@christine.website> | 2018-10-05 10:06:54 -0700 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2018-10-05 14:31:22 -0700 |
| commit | dbeba1e5c5c0bc534a515eb298ee4f1d49df4d20 (patch) | |
| tree | 2bbca457936bbf32290b9a8543f9a2f156b45175 /vendor/github.com/google/uuid/sql.go | |
| parent | 7332b16d4a09492e5a35ad00d3ab58ac5742cad6 (diff) | |
| download | x-dbeba1e5c5c0bc534a515eb298ee4f1d49df4d20.tar.xz x-dbeba1e5c5c0bc534a515eb298ee4f1d49df4d20.zip | |
update vendor
Diffstat (limited to 'vendor/github.com/google/uuid/sql.go')
| -rw-r--r-- | vendor/github.com/google/uuid/sql.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/github.com/google/uuid/sql.go b/vendor/github.com/google/uuid/sql.go new file mode 100644 index 0000000..f326b54 --- /dev/null +++ b/vendor/github.com/google/uuid/sql.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements sql.Scanner so UUIDs can be read from databases transparently +// Currently, database types that map to string and []byte are supported. Please +// consult database-specific driver documentation for matching types. +func (uuid *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + return nil + + case string: + // if an empty UUID comes from a table, we return a null UUID + if src == "" { + return nil + } + + // see Parse for required string format + u, err := Parse(src) + if err != nil { + return fmt.Errorf("Scan: %v", err) + } + + *uuid = u + + case []byte: + // if an empty UUID comes from a table, we return a null UUID + if len(src) == 0 { + return nil + } + + // assumes a simple slice of bytes if 16 bytes + // otherwise attempts to parse + if len(src) != 16 { + return uuid.Scan(string(src)) + } + copy((*uuid)[:], src) + + default: + return fmt.Errorf("Scan: unable to scan type %T into UUID", src) + } + + return nil +} + +// Value implements sql.Valuer so that UUIDs can be written to databases +// transparently. Currently, UUIDs map to strings. Please consult +// database-specific driver documentation for matching types. +func (uuid UUID) Value() (driver.Value, error) { + return uuid.String(), nil +} |
