...
1
2 package zeronull
3
4 import (
5 "database/sql/driver"
6 "fmt"
7 "math"
8
9 "github.com/jackc/pgx/v5/pgtype"
10 )
11
12 type Int2 int16
13
14 func (Int2) SkipUnderlyingTypePlan() {}
15
16
17 func (dst *Int2) ScanInt64(n int64, valid bool) error {
18 if !valid {
19 *dst = 0
20 return nil
21 }
22
23 if n < math.MinInt16 {
24 return fmt.Errorf("%d is greater than maximum value for Int2", n)
25 }
26 if n > math.MaxInt16 {
27 return fmt.Errorf("%d is greater than maximum value for Int2", n)
28 }
29 *dst = Int2(n)
30
31 return nil
32 }
33
34
35 func (dst *Int2) Scan(src any) error {
36 if src == nil {
37 *dst = 0
38 return nil
39 }
40
41 var nullable pgtype.Int2
42 err := nullable.Scan(src)
43 if err != nil {
44 return err
45 }
46
47 *dst = Int2(nullable.Int16)
48
49 return nil
50 }
51
52
53 func (src Int2) Value() (driver.Value, error) {
54 if src == 0 {
55 return nil, nil
56 }
57 return int64(src), nil
58 }
59
60 type Int4 int32
61
62 func (Int4) SkipUnderlyingTypePlan() {}
63
64
65 func (dst *Int4) ScanInt64(n int64, valid bool) error {
66 if !valid {
67 *dst = 0
68 return nil
69 }
70
71 if n < math.MinInt32 {
72 return fmt.Errorf("%d is greater than maximum value for Int4", n)
73 }
74 if n > math.MaxInt32 {
75 return fmt.Errorf("%d is greater than maximum value for Int4", n)
76 }
77 *dst = Int4(n)
78
79 return nil
80 }
81
82
83 func (dst *Int4) Scan(src any) error {
84 if src == nil {
85 *dst = 0
86 return nil
87 }
88
89 var nullable pgtype.Int4
90 err := nullable.Scan(src)
91 if err != nil {
92 return err
93 }
94
95 *dst = Int4(nullable.Int32)
96
97 return nil
98 }
99
100
101 func (src Int4) Value() (driver.Value, error) {
102 if src == 0 {
103 return nil, nil
104 }
105 return int64(src), nil
106 }
107
108 type Int8 int64
109
110 func (Int8) SkipUnderlyingTypePlan() {}
111
112
113 func (dst *Int8) ScanInt64(n int64, valid bool) error {
114 if !valid {
115 *dst = 0
116 return nil
117 }
118
119 if n < math.MinInt64 {
120 return fmt.Errorf("%d is greater than maximum value for Int8", n)
121 }
122 if n > math.MaxInt64 {
123 return fmt.Errorf("%d is greater than maximum value for Int8", n)
124 }
125 *dst = Int8(n)
126
127 return nil
128 }
129
130
131 func (dst *Int8) Scan(src any) error {
132 if src == nil {
133 *dst = 0
134 return nil
135 }
136
137 var nullable pgtype.Int8
138 err := nullable.Scan(src)
139 if err != nil {
140 return err
141 }
142
143 *dst = Int8(nullable.Int64)
144
145 return nil
146 }
147
148
149 func (src Int8) Value() (driver.Value, error) {
150 if src == 0 {
151 return nil, nil
152 }
153 return int64(src), nil
154 }
155
View as plain text