Something went wrong. Try again.
Cooperative email for PDS operators
Something went wrong. Try again.
1.5 kB · 59 lines
Go
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960// 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}