Skip to content

Commit 1996ec8

Browse files
committed
feat: use errors.Join to combine multiple errors
As an update to the previous commit 59f084e, use "errors.Join"[^0] instead of multiple "%w" formatters for "fmt.Errorf". [^0]: https://pkg.go.dev/errors#Join
1 parent 59f084e commit 1996ec8

File tree

22 files changed

+85
-253
lines changed

22 files changed

+85
-253
lines changed

database/cassandra/cassandra.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,7 @@ func (c *Cassandra) ensureVersionTable() (err error) {
314314

315315
defer func() {
316316
if e := c.Unlock(); e != nil {
317-
if err == nil {
318-
err = e
319-
} else {
320-
err = fmt.Errorf("%w: %w", err, e)
321-
}
317+
err = errors.Join(err, e)
322318
}
323319
}()
324320

database/clickhouse/clickhouse.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package clickhouse
22

33
import (
44
"database/sql"
5+
"errors"
56
"fmt"
67
"io"
78
"net/url"
@@ -208,11 +209,7 @@ func (ch *ClickHouse) ensureVersionTable() (err error) {
208209

209210
defer func() {
210211
if e := ch.Unlock(); e != nil {
211-
if err == nil {
212-
err = e
213-
} else {
214-
err = fmt.Errorf("%w: %w", err, e)
215-
}
212+
err = errors.Join(err, e)
216213
}
217214
}()
218215

@@ -265,11 +262,7 @@ func (ch *ClickHouse) Drop() (err error) {
265262
}
266263
defer func() {
267264
if errClose := tables.Close(); errClose != nil {
268-
if err == nil {
269-
err = errClose
270-
} else {
271-
err = fmt.Errorf("%w: %w", err, errClose)
272-
}
265+
err = errors.Join(err, errClose)
273266
}
274267
}()
275268

database/cockroachdb/cockroachdb.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cockroachdb
33
import (
44
"context"
55
"database/sql"
6+
"errors"
67
"fmt"
78
"io"
89
nurl "net/url"
@@ -160,11 +161,7 @@ func (c *CockroachDb) Lock() error {
160161
}
161162
defer func() {
162163
if errClose := rows.Close(); errClose != nil {
163-
if err == nil {
164-
err = errClose
165-
} else {
166-
err = fmt.Errorf("%w: %w", err, errClose)
167-
}
164+
err = errors.Join(err, errClose)
168165
}
169166
}()
170167

@@ -279,11 +276,7 @@ func (c *CockroachDb) Drop() (err error) {
279276
}
280277
defer func() {
281278
if errClose := tables.Close(); errClose != nil {
282-
if err == nil {
283-
err = errClose
284-
} else {
285-
err = fmt.Errorf("%w: %w", err, errClose)
286-
}
279+
err = errors.Join(err, errClose)
287280
}
288281
}()
289282

@@ -325,11 +318,7 @@ func (c *CockroachDb) ensureVersionTable() (err error) {
325318

326319
defer func() {
327320
if e := c.Unlock(); e != nil {
328-
if err == nil {
329-
err = e
330-
} else {
331-
err = fmt.Errorf("%w: %w", err, e)
332-
}
321+
err = errors.Join(err, e)
333322
}
334323
}()
335324

database/firebird/firebird.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package firebird
55
import (
66
"context"
77
"database/sql"
8+
"errors"
89
"fmt"
910
"io"
1011
nurl "net/url"
@@ -179,11 +180,7 @@ func (f *Firebird) Drop() (err error) {
179180
}
180181
defer func() {
181182
if errClose := tables.Close(); errClose != nil {
182-
if err == nil {
183-
err = errClose
184-
} else {
185-
err = fmt.Errorf("%w: %w", err, errClose)
186-
}
183+
err = errors.Join(err, errClose)
187184
}
188185
}()
189186

@@ -226,11 +223,7 @@ func (f *Firebird) ensureVersionTable() (err error) {
226223

227224
defer func() {
228225
if e := f.Unlock(); e != nil {
229-
if err == nil {
230-
err = e
231-
} else {
232-
err = fmt.Errorf("%w: %w", err, e)
233-
}
226+
err = errors.Join(err, e)
234227
}
235228
}()
236229

database/mongodb/mongodb.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package mongodb
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"io"
78
"net/url"
@@ -324,11 +325,7 @@ func (m *Mongo) ensureVersionTable() (err error) {
324325

325326
defer func() {
326327
if e := m.Unlock(); e != nil {
327-
if err == nil {
328-
err = e
329-
} else {
330-
err = fmt.Errorf("%w: %w", err, e)
331-
}
328+
err = errors.Join(err, e)
332329
}
333330
}()
334331

database/mysql/mysql.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"crypto/tls"
88
"crypto/x509"
99
"database/sql"
10+
"errors"
1011
"fmt"
1112
"io"
1213
nurl "net/url"
@@ -361,7 +362,7 @@ func (m *Mysql) SetVersion(version int, dirty bool) error {
361362
query := "DELETE FROM `" + m.config.MigrationsTable + "` LIMIT 1"
362363
if _, err := tx.ExecContext(context.Background(), query); err != nil {
363364
if errRollback := tx.Rollback(); errRollback != nil {
364-
err = fmt.Errorf("%w: %w", err, errRollback)
365+
err = errors.Join(err, errRollback)
365366
}
366367
return &database.Error{OrigErr: err, Query: []byte(query)}
367368
}
@@ -373,7 +374,7 @@ func (m *Mysql) SetVersion(version int, dirty bool) error {
373374
query := "INSERT INTO `" + m.config.MigrationsTable + "` (version, dirty) VALUES (?, ?)"
374375
if _, err := tx.ExecContext(context.Background(), query, version, dirty); err != nil {
375376
if errRollback := tx.Rollback(); errRollback != nil {
376-
err = fmt.Errorf("%w: %w", err, errRollback)
377+
err = errors.Join(err, errRollback)
377378
}
378379
return &database.Error{OrigErr: err, Query: []byte(query)}
379380
}
@@ -415,11 +416,7 @@ func (m *Mysql) Drop() (err error) {
415416
}
416417
defer func() {
417418
if errClose := tables.Close(); errClose != nil {
418-
if err == nil {
419-
err = errClose
420-
} else {
421-
err = fmt.Errorf("%w: %w", err, errClose)
422-
}
419+
err = errors.Join(err, errClose)
423420
}
424421
}()
425422

@@ -472,11 +469,7 @@ func (m *Mysql) ensureVersionTable() (err error) {
472469

473470
defer func() {
474471
if e := m.Unlock(); e != nil {
475-
if err == nil {
476-
err = e
477-
} else {
478-
err = fmt.Errorf("%w: %w", err, e)
479-
}
472+
err = errors.Join(err, e)
480473
}
481474
}()
482475

database/neo4j/neo4j.go

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package neo4j
22

33
import (
44
"bytes"
5+
"errors"
56
"fmt"
67
"io"
78
neturl "net/url"
@@ -140,11 +141,7 @@ func (n *Neo4j) Run(migration io.Reader) (err error) {
140141
}
141142
defer func() {
142143
if cerr := session.Close(); cerr != nil {
143-
if err == nil {
144-
err = cerr
145-
} else {
146-
err = fmt.Errorf("%w: %w", err, cerr)
147-
}
144+
err = errors.Join(err, cerr)
148145
}
149146
}()
150147

@@ -191,11 +188,7 @@ func (n *Neo4j) SetVersion(version int, dirty bool) (err error) {
191188
}
192189
defer func() {
193190
if cerr := session.Close(); cerr != nil {
194-
if err == nil {
195-
err = cerr
196-
} else {
197-
err = fmt.Errorf("%w: %w", err, cerr)
198-
}
191+
err = errors.Join(err, cerr)
199192
}
200193
}()
201194

@@ -220,11 +213,7 @@ func (n *Neo4j) Version() (version int, dirty bool, err error) {
220213
}
221214
defer func() {
222215
if cerr := session.Close(); cerr != nil {
223-
if err == nil {
224-
err = cerr
225-
} else {
226-
err = fmt.Errorf("%w: %w", err, cerr)
227-
}
216+
err = errors.Join(err, cerr)
228217
}
229218
}()
230219

@@ -272,11 +261,7 @@ func (n *Neo4j) Drop() (err error) {
272261
}
273262
defer func() {
274263
if cerr := session.Close(); cerr != nil {
275-
if err == nil {
276-
err = cerr
277-
} else {
278-
err = fmt.Errorf("%w: %w", err, cerr)
279-
}
264+
err = errors.Join(err, cerr)
280265
}
281266
}()
282267

@@ -293,11 +278,7 @@ func (n *Neo4j) ensureVersionConstraint() (err error) {
293278
}
294279
defer func() {
295280
if cerr := session.Close(); cerr != nil {
296-
if err == nil {
297-
err = cerr
298-
} else {
299-
err = fmt.Errorf("%w: %w", err, cerr)
300-
}
281+
err = errors.Join(err, cerr)
301282
}
302283
}()
303284

database/pgx/pgx.go

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package pgx
55
import (
66
"context"
77
"database/sql"
8+
"errors"
89
"fmt"
910
"io"
1011
nurl "net/url"
@@ -294,11 +295,7 @@ func (p *Postgres) applyTableLock() error {
294295
defer func() {
295296
errRollback := tx.Rollback()
296297
if errRollback != nil {
297-
if err == nil {
298-
err = errRollback
299-
} else {
300-
err = fmt.Errorf("%w: %w", err, errRollback)
301-
}
298+
err = errors.Join(err, errRollback)
302299
}
303300
}()
304301

@@ -315,11 +312,7 @@ func (p *Postgres) applyTableLock() error {
315312

316313
defer func() {
317314
if errClose := rows.Close(); errClose != nil {
318-
if err == nil {
319-
err = errClose
320-
} else {
321-
err = fmt.Errorf("%w: %w", err, errClose)
322-
}
315+
err = errors.Join(err, errClose)
323316
}
324317
}()
325318

@@ -461,7 +454,7 @@ func (p *Postgres) SetVersion(version int, dirty bool) error {
461454
query := `TRUNCATE ` + quoteIdentifier(p.config.migrationsSchemaName) + `.` + quoteIdentifier(p.config.migrationsTableName)
462455
if _, err := tx.Exec(query); err != nil {
463456
if errRollback := tx.Rollback(); errRollback != nil {
464-
err = fmt.Errorf("%w: %w", err, errRollback)
457+
err = errors.Join(err, errRollback)
465458
}
466459
return &database.Error{OrigErr: err, Query: []byte(query)}
467460
}
@@ -473,7 +466,7 @@ func (p *Postgres) SetVersion(version int, dirty bool) error {
473466
query = `INSERT INTO ` + quoteIdentifier(p.config.migrationsSchemaName) + `.` + quoteIdentifier(p.config.migrationsTableName) + ` (version, dirty) VALUES ($1, $2)`
474467
if _, err := tx.Exec(query, version, dirty); err != nil {
475468
if errRollback := tx.Rollback(); errRollback != nil {
476-
err = fmt.Errorf("%w: %w", err, errRollback)
469+
err = errors.Join(err, errRollback)
477470
}
478471
return &database.Error{OrigErr: err, Query: []byte(query)}
479472
}
@@ -515,11 +508,7 @@ func (p *Postgres) Drop() (err error) {
515508
}
516509
defer func() {
517510
if errClose := tables.Close(); errClose != nil {
518-
if err == nil {
519-
err = errClose
520-
} else {
521-
err = fmt.Errorf("%w: %w", err, errClose)
522-
}
511+
err = errors.Join(err, errClose)
523512
}
524513
}()
525514

@@ -567,11 +556,7 @@ func (p *Postgres) ensureVersionTable() (err error) {
567556

568557
defer func() {
569558
if e := p.Unlock(); e != nil {
570-
if err == nil {
571-
err = e
572-
} else {
573-
err = fmt.Errorf("%w: %w", err, e)
574-
}
559+
err = errors.Join(err, e)
575560
}
576561
}()
577562

0 commit comments

Comments
 (0)