Source File
sql.go
Belonging Package
github.com/gofrs/uuid
// Copyright (C) 2013-2018 by Maxim Bublis <b@codemonkey.ru>//// Permission is hereby granted, free of charge, to any person obtaining// a copy of this software and associated documentation files (the// "Software"), to deal in the Software without restriction, including// without limitation the rights to use, copy, modify, merge, publish,// distribute, sublicense, and/or sell copies of the Software, and to// permit persons to whom the Software is furnished to do so, subject to// the following conditions://// The above copyright notice and this permission notice shall be// included in all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.package uuidimport ()var _ driver.Valuer = UUID{}var _ sql.Scanner = (*UUID)(nil)// Value implements the driver.Valuer interface.func ( UUID) () (driver.Value, error) {return .String(), nil}// Scan implements the sql.Scanner interface.// A 16-byte slice will be handled by UnmarshalBinary, while// a longer byte slice or a string will be handled by UnmarshalText.func ( *UUID) ( interface{}) error {switch src := .(type) {case UUID: // support gorm convert from UUID to NullUUID* =return nilcase []byte:if len() == Size {return .UnmarshalBinary()}return .UnmarshalText()case string:, := FromString()* =return}return fmt.Errorf("uuid: cannot convert %T to UUID", )}// NullUUID can be used with the standard sql package to represent a// UUID value that can be NULL in the database.type NullUUID struct {UUID UUIDValid bool}// Value implements the driver.Valuer interface.func ( NullUUID) () (driver.Value, error) {if !.Valid {return nil, nil}// Delegate to UUID Value functionreturn .UUID.Value()}// Scan implements the sql.Scanner interface.func ( *NullUUID) ( interface{}) error {if == nil {.UUID, .Valid = Nil, falsereturn nil}// Delegate to UUID Scan function.Valid = truereturn .UUID.Scan()}var nullJSON = []byte("null")// MarshalJSON marshals the NullUUID as null or the nested UUIDfunc ( NullUUID) () ([]byte, error) {if !.Valid {return nullJSON, nil}var [38]byte[0] = '"'encodeCanonical([1:37], .UUID)[37] = '"'return [:], nil}// UnmarshalJSON unmarshals a NullUUIDfunc ( *NullUUID) ( []byte) error {if string() == "null" {.UUID, .Valid = Nil, falsereturn nil}if := len(); >= 2 && [0] == '"' {= [1 : -1]}:= .UUID.UnmarshalText().Valid = ( == nil)return}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |