...

Text file src/github.com/jackc/pgx/v5/pgtype/zeronull/int.go.erb

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

     1package zeronull
     2
     3import (
     4	"database/sql/driver"
     5	"fmt"
     6	"math"
     7
     8	"github.com/jackc/pgx/v5/pgtype"
     9)
    10
    11<% [2, 4, 8].each do |pg_byte_size| %>
    12<% pg_bit_size = pg_byte_size * 8 %>
    13type Int<%= pg_byte_size %> int<%= pg_bit_size %>
    14
    15func (Int<%= pg_byte_size %>) SkipUnderlyingTypePlan() {}
    16
    17// ScanInt64 implements the Int64Scanner interface.
    18func (dst *Int<%= pg_byte_size %>) ScanInt64(n int64, valid bool) error {
    19	if !valid {
    20		*dst = 0
    21		return nil
    22	}
    23
    24	if n < math.MinInt<%= pg_bit_size %> {
    25		return fmt.Errorf("%d is greater than maximum value for Int<%= pg_byte_size %>", n)
    26	}
    27	if n > math.MaxInt<%= pg_bit_size %> {
    28		return fmt.Errorf("%d is greater than maximum value for Int<%= pg_byte_size %>", n)
    29	}
    30	*dst = Int<%= pg_byte_size %>(n)
    31
    32	return nil
    33}
    34
    35// Scan implements the database/sql Scanner interface.
    36func (dst *Int<%= pg_byte_size %>) Scan(src any) error {
    37	if src == nil {
    38		*dst = 0
    39		return nil
    40	}
    41
    42	var nullable pgtype.Int<%= pg_byte_size %>
    43	err := nullable.Scan(src)
    44	if err != nil {
    45		return err
    46	}
    47
    48	*dst = Int<%= pg_byte_size %>(nullable.Int<%= pg_bit_size %>)
    49
    50	return nil
    51}
    52
    53// Value implements the database/sql/driver Valuer interface.
    54func (src Int<%= pg_byte_size %>) Value() (driver.Value, error) {
    55	if src == 0 {
    56		return nil, nil
    57	}
    58	return int64(src), nil
    59}
    60<% end %>

View as plain text