...

Source file src/github.com/jackc/pgx/v5/pgtype/zeronull/float8.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 Float8 float64
    10  
    11  func (Float8) SkipUnderlyingTypePlan() {}
    12  
    13  // ScanFloat64 implements the Float64Scanner interface.
    14  func (f *Float8) ScanFloat64(n pgtype.Float8) error {
    15  	if !n.Valid {
    16  		*f = 0
    17  		return nil
    18  	}
    19  
    20  	*f = Float8(n.Float64)
    21  
    22  	return nil
    23  }
    24  
    25  func (f Float8) Float64Value() (pgtype.Float8, error) {
    26  	if f == 0 {
    27  		return pgtype.Float8{}, nil
    28  	}
    29  	return pgtype.Float8{Float64: float64(f), Valid: true}, nil
    30  }
    31  
    32  // Scan implements the database/sql Scanner interface.
    33  func (f *Float8) Scan(src any) error {
    34  	if src == nil {
    35  		*f = 0
    36  		return nil
    37  	}
    38  
    39  	var nullable pgtype.Float8
    40  	err := nullable.Scan(src)
    41  	if err != nil {
    42  		return err
    43  	}
    44  
    45  	*f = Float8(nullable.Float64)
    46  
    47  	return nil
    48  }
    49  
    50  // Value implements the database/sql/driver Valuer interface.
    51  func (f Float8) Value() (driver.Value, error) {
    52  	if f == 0 {
    53  		return nil, nil
    54  	}
    55  	return float64(f), nil
    56  }
    57  

View as plain text