Skip to content

Commit 195c99c

Browse files
committed
further fixes to set in Scan()
1 parent 0e95b1a commit 195c99c

18 files changed

+41
-61
lines changed

bool.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,11 @@ func (b Bool) IsZero() bool {
126126

127127
// Scan implements the Scanner interface.
128128
func (b *Bool) Scan(value interface{}) error {
129-
b.set = true
130129
if value == nil {
131-
b.Bool, b.Valid = false, false
130+
b.Bool, b.Valid, b.set = false, false, true
132131
return nil
133132
}
134-
b.Valid = true
133+
b.Valid, b.set = true, true
135134
return convert.ConvertAssign(&b.Bool, value)
136135
}
137136

byte.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -119,21 +119,18 @@ func (b Byte) IsZero() bool {
119119

120120
// Scan implements the Scanner interface.
121121
func (b *Byte) Scan(value interface{}) error {
122-
b.set = true
123122
if value == nil {
124-
b.Byte, b.Valid = 0, false
123+
b.Byte, b.Valid, b.set = 0, false, false
125124
return nil
126125
}
127126

128127
val := value.(string)
129128
if len(val) == 0 {
130-
b.Valid = false
131-
b.Byte = 0
129+
b.Byte, b.Valid, b.set = 0, false, false
132130
return nil
133131
}
134132

135-
b.Valid = true
136-
b.Byte = byte(val[0])
133+
b.Byte, b.Valid, b.set = val[0], true, true
137134
return nil
138135
}
139136

bytes.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ func (b Bytes) IsZero() bool {
117117

118118
// Scan implements the Scanner interface.
119119
func (b *Bytes) Scan(value interface{}) error {
120-
b.set = true
121120
if value == nil {
122-
b.Bytes, b.Valid = []byte{}, false
121+
b.Bytes, b.Valid, b.set = nil, false, false
123122
return nil
124123
}
125-
b.Valid = true
124+
b.Valid, b.set = true, true
126125
return convert.ConvertAssign(&b.Bytes, value)
127126
}
128127

float32.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,11 @@ func (f Float32) IsZero() bool {
115115

116116
// Scan implements the Scanner interface.
117117
func (f *Float32) Scan(value interface{}) error {
118-
f.set = true
119118
if value == nil {
120-
f.Float32, f.Valid = 0, false
119+
f.Float32, f.Valid, f.set = 0, false, false
121120
return nil
122121
}
123-
f.Valid = true
122+
f.Valid, f.set = true, true
124123
return convert.ConvertAssign(&f.Float32, value)
125124
}
126125

float64.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,11 @@ func (f Float64) IsZero() bool {
110110

111111
// Scan implements the Scanner interface.
112112
func (f *Float64) Scan(value interface{}) error {
113-
f.set = true
114113
if value == nil {
115-
f.Float64, f.Valid = 0, false
114+
f.Float64, f.Valid, f.set = 0, false, false
116115
return nil
117116
}
118-
f.Valid = true
117+
f.Valid, f.set = true, true
119118
return convert.ConvertAssign(&f.Float64, value)
120119
}
121120

int.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ func (i Int) IsZero() bool {
117117

118118
// Scan implements the Scanner interface.
119119
func (i *Int) Scan(value interface{}) error {
120-
i.set = true
121120
if value == nil {
122-
i.Int, i.Valid = 0, false
121+
i.Int, i.Valid, i.set = 0, false, false
123122
return nil
124123
}
125-
i.Valid = true
124+
i.Valid, i.set = true, true
126125
return convert.ConvertAssign(&i.Int, value)
127126
}
128127

int16.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ func (i Int16) IsSet() bool {
4848
func (i *Int16) UnmarshalJSON(data []byte) error {
4949
i.set = true
5050
if bytes.Equal(data, NullBytes) {
51-
i.Valid = false
52-
i.Int16 = 0
51+
i.Int16, i.Valid = 0, false
5352
return nil
5453
}
5554

@@ -62,8 +61,7 @@ func (i *Int16) UnmarshalJSON(data []byte) error {
6261
return fmt.Errorf("json: %d overflows max int16 value", x)
6362
}
6463

65-
i.Int16 = int16(x)
66-
i.Valid = true
64+
i.Int16, i.Valid = int16(x), true
6765
return nil
6866
}
6967

@@ -121,12 +119,11 @@ func (i Int16) IsZero() bool {
121119

122120
// Scan implements the Scanner interface.
123121
func (i *Int16) Scan(value interface{}) error {
124-
i.set = true
125122
if value == nil {
126-
i.Int16, i.Valid = 0, false
123+
i.Int16, i.Valid, i.set = 0, false, false
127124
return nil
128125
}
129-
i.Valid = true
126+
i.Valid, i.set = true, true
130127
return convert.ConvertAssign(&i.Int16, value)
131128
}
132129

int32.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,11 @@ func (i Int32) IsZero() bool {
122122

123123
// Scan implements the Scanner interface.
124124
func (i *Int32) Scan(value interface{}) error {
125-
i.set = true
126125
if value == nil {
127-
i.Int32, i.Valid = 0, false
126+
i.Int32, i.Valid, i.set = 0, false, false
128127
return nil
129128
}
130-
i.Valid = true
129+
i.Valid, i.set = true, true
131130
return convert.ConvertAssign(&i.Int32, value)
132131
}
133132

int64.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,11 @@ func (i Int64) IsZero() bool {
110110

111111
// Scan implements the Scanner interface.
112112
func (i *Int64) Scan(value interface{}) error {
113-
i.set = true
114113
if value == nil {
115-
i.Int64, i.Valid = 0, false
114+
i.Int64, i.Valid, i.set = 0, false, false
116115
return nil
117116
}
118-
i.Valid = true
117+
i.Valid, i.set = true, true
119118
return convert.ConvertAssign(&i.Int64, value)
120119
}
121120

int8.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,11 @@ func (i Int8) IsZero() bool {
121121

122122
// Scan implements the Scanner interface.
123123
func (i *Int8) Scan(value interface{}) error {
124-
i.set = true
125124
if value == nil {
126-
i.Int8, i.Valid = 0, false
125+
i.Int8, i.Valid, i.set = 0, false, false
127126
return nil
128127
}
129-
i.Valid = true
128+
i.Valid, i.set = true, true
130129
return convert.ConvertAssign(&i.Int8, value)
131130
}
132131

json.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,11 @@ func (j JSON) IsZero() bool {
150150

151151
// Scan implements the Scanner interface.
152152
func (j *JSON) Scan(value interface{}) error {
153-
j.set = true
154153
if value == nil {
155-
j.JSON, j.Valid = []byte{}, false
154+
j.JSON, j.Valid, j.set = nil, false, false
156155
return nil
157156
}
158-
j.Valid = true
157+
j.Valid, j.set = true, true
159158
return convert.ConvertAssign(&j.JSON, value)
160159
}
161160

string.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,11 @@ func (s String) IsZero() bool {
110110

111111
// Scan implements the Scanner interface.
112112
func (s *String) Scan(value interface{}) error {
113-
s.set = true
114113
if value == nil {
115-
s.String, s.Valid = "", false
114+
s.String, s.Valid, s.set = "", false, false
116115
return nil
117116
}
118-
s.Valid = true
117+
s.Valid, s.set = true, true
119118
return convert.ConvertAssign(&s.String, value)
120119
}
121120

time.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -111,18 +111,19 @@ func (t Time) IsZero() bool {
111111

112112
// Scan implements the Scanner interface.
113113
func (t *Time) Scan(value interface{}) error {
114-
t.set = true
115114
var err error
116115
switch x := value.(type) {
117116
case time.Time:
118117
t.Time = x
119118
case nil:
120-
t.Valid = false
119+
t.Valid, t.set = false, false
121120
return nil
122121
default:
123122
err = fmt.Errorf("null: cannot scan type %T into null.Time: %v", value, value)
124123
}
125-
t.Valid = err == nil
124+
if err == nil {
125+
t.Valid, t.set = true, true
126+
}
126127
return err
127128
}
128129

uint.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,11 @@ func (u Uint) IsZero() bool {
115115

116116
// Scan implements the Scanner interface.
117117
func (u *Uint) Scan(value interface{}) error {
118-
u.set = true
119118
if value == nil {
120-
u.Uint, u.Valid = 0, false
119+
u.Uint, u.Valid, u.set = 0, false, false
121120
return nil
122121
}
123-
u.Valid = true
122+
u.Valid, u.set = true, true
124123
return convert.ConvertAssign(&u.Uint, value)
125124
}
126125

uint16.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,11 @@ func (u Uint16) IsZero() bool {
121121

122122
// Scan implements the Scanner interface.
123123
func (u *Uint16) Scan(value interface{}) error {
124-
u.set = true
125124
if value == nil {
126-
u.Uint16, u.Valid = 0, false
125+
u.Uint16, u.Valid, u.set = 0, false, false
127126
return nil
128127
}
129-
u.Valid = true
128+
u.Valid, u.set = true, true
130129
return convert.ConvertAssign(&u.Uint16, value)
131130
}
132131

uint32.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,11 @@ func (u Uint32) IsZero() bool {
121121

122122
// Scan implements the Scanner interface.
123123
func (u *Uint32) Scan(value interface{}) error {
124-
u.set = true
125124
if value == nil {
126-
u.Uint32, u.Valid = 0, false
125+
u.Uint32, u.Valid, u.set = 0, false, false
127126
return nil
128127
}
129-
u.Valid = true
128+
u.Valid, u.set = true, true
130129
return convert.ConvertAssign(&u.Uint32, value)
131130
}
132131

uint64.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,11 @@ func (u Uint64) IsZero() bool {
113113

114114
// Scan implements the Scanner interface.
115115
func (u *Uint64) Scan(value interface{}) error {
116-
u.set = true
117116
if value == nil {
118-
u.Uint64, u.Valid = 0, false
117+
u.Uint64, u.Valid, u.set = 0, false, false
119118
return nil
120119
}
121-
u.Valid = true
120+
u.Valid, u.set = true, true
122121
return convert.ConvertAssign(&u.Uint64, value)
123122
}
124123

uint8.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,11 @@ func (u Uint8) IsZero() bool {
121121

122122
// Scan implements the Scanner interface.
123123
func (u *Uint8) Scan(value interface{}) error {
124-
u.set = true
125124
if value == nil {
126-
u.Uint8, u.Valid = 0, false
125+
u.Uint8, u.Valid, u.set = 0, false, false
127126
return nil
128127
}
129-
u.Valid = true
128+
u.Valid, u.set = true, true
130129
return convert.ConvertAssign(&u.Uint8, value)
131130
}
132131

0 commit comments

Comments
 (0)