...

Source file src/github.com/jackc/pgx/v5/pgtype/zeronull/uuid.go

Documentation: github.com/jackc/pgx/v5/pgtype/zeronull

     1  package zeronull
     2  
     3  import (
     4  	"database/sql/driver"
     5  
     6  	"github.com/jackc/pgx/v5/pgtype"
     7  )
     8  
     9  type UUID [16]byte
    10  
    11  func (UUID) SkipUnderlyingTypePlan() {}
    12  
    13  // ScanUUID implements the UUIDScanner interface.
    14  func (u *UUID) ScanUUID(v pgtype.UUID) error {
    15  	if !v.Valid {
    16  		*u = UUID{}
    17  		return nil
    18  	}
    19  
    20  	*u = UUID(v.Bytes)
    21  
    22  	return nil
    23  }
    24  
    25  func (u UUID) UUIDValue() (pgtype.UUID, error) {
    26  	if u == (UUID{}) {
    27  		return pgtype.UUID{}, nil
    28  	}
    29  	return pgtype.UUID{Bytes: u, Valid: true}, nil
    30  }
    31  
    32  // Scan implements the database/sql Scanner interface.
    33  func (u *UUID) Scan(src any) error {
    34  	if src == nil {
    35  		*u = UUID{}
    36  		return nil
    37  	}
    38  
    39  	var nullable pgtype.UUID
    40  	err := nullable.Scan(src)
    41  	if err != nil {
    42  		return err
    43  	}
    44  
    45  	*u = UUID(nullable.Bytes)
    46  
    47  	return nil
    48  }
    49  
    50  // Value implements the database/sql/driver Valuer interface.
    51  func (u UUID) Value() (driver.Value, error) {
    52  	if u == (UUID{}) {
    53  		return nil, nil
    54  	}
    55  
    56  	buf, err := pgtype.UUIDCodec{}.PlanEncode(nil, pgtype.UUIDOID, pgtype.TextFormatCode, u).Encode(u, nil)
    57  	if err != nil {
    58  		return nil, err
    59  	}
    60  
    61  	return string(buf), nil
    62  }
    63  

View as plain text