# HG changeset patch
# User Axel Prel <axel.prel@xcg-consulting.fr>
# Date 1718629875 -7200
#      Mon Jun 17 15:11:15 2024 +0200
# Node ID 1edf4f94bac37270cec312690c495eea3ad096af
# Parent  6b5f31e47bbc0d52f36dc45ef5a9e673878e7ab4
lint the obvious

diff --git a/database/array_contains.go b/database/array_contains.go
--- a/database/array_contains.go
+++ b/database/array_contains.go
@@ -2,7 +2,6 @@
 
 import (
 	"database/sql/driver"
-	"fmt"
 	"sort"
 	"strings"
 
@@ -12,7 +11,7 @@
 type ArrayContains map[string]interface{}
 
 //nolint:revive
-func (ac ArrayContains) ToSql() (sql string, args []interface{}, err error) {
+func (ac ArrayContains) ToSql() (sql string, args []interface{}, err error) { //nolint:nonamedreturns
 	if len(ac) == 0 {
 		// Empty Sql{} evaluates to true.
 		sql = "(1=1)"
@@ -51,7 +50,7 @@
 		if val == nil {
 			panic("cannot handle NULL values")
 		} else {
-			expr = fmt.Sprintf("%s @> ?", key)
+			expr = key + " @> ?"
 			args = append(args, val)
 		}
 		exprs = append(exprs, expr)
@@ -67,5 +66,6 @@
 		sortedKeys = append(sortedKeys, k)
 	}
 	sort.Strings(sortedKeys)
+
 	return sortedKeys
 }
diff --git a/database/database.go b/database/database.go
--- a/database/database.go
+++ b/database/database.go
@@ -13,5 +13,6 @@
 	if maxConn != 0 {
 		db.SetMaxOpenConns(maxConn)
 	}
+
 	return db, nil
 }
diff --git a/database/migrations.go b/database/migrations.go
--- a/database/migrations.go
+++ b/database/migrations.go
@@ -12,6 +12,7 @@
 	"github.com/rs/zerolog"
 )
 
+//nolint:dupword
 //go:generate go-bindata -pkg database -prefix migrations migrations
 //go:generate sed -i "1s;^;// Code generated by go-bindata. DO NOT EDIT.\\n\\n;" bindata.go
 
@@ -70,6 +71,7 @@
 	if err != nil {
 		return nil, err
 	}
+
 	return m, nil
 }
 
@@ -86,14 +88,15 @@
 	log.Warn().Msg("Database is not up-to-date, it will be migrated automatically")
 	m, err := NewMigrate(dsn, sourceDriver)
 	if err != nil {
-		return fmt.Errorf("failed to init migration engine: %s", err)
+		return fmt.Errorf("failed to init migration engine: %w", err)
 	}
 	defer m.Close()
 
 	if err := m.Up(); err != nil {
-		return fmt.Errorf("error during auto-migration: %s", err)
+		return fmt.Errorf("error during auto-migration: %w", err)
 	}
 	log.Info().Msg("Successfully upgraded database")
+
 	return nil
 }
 
@@ -101,7 +104,7 @@
 func IsUptodate(dsn string, sourceDriver source.Driver) error {
 	m, err := NewMigrate(dsn, sourceDriver)
 	if err != nil {
-		return fmt.Errorf("failed to check database version: %s", err)
+		return fmt.Errorf("failed to check database version: %w", err)
 	}
 
 	// Lookup the last available db version
@@ -120,14 +123,14 @@
 	}
 
 	version, dirty, err := m.Version()
-	if err == migrate.ErrNilVersion {
+	if errors.Is(err, migrate.ErrNilVersion) {
 		return ErrDBNotVersioned
 	}
 	if err != nil {
-		return fmt.Errorf("error while checking the database version: %s", err)
+		return fmt.Errorf("error while checking the database version: %w", err)
 	}
 	if dirty {
-		return fmt.Errorf("database is marked 'dirty'")
+		return errors.New("database is marked 'dirty'")
 	}
 
 	if version < lastVersion {
@@ -142,5 +145,6 @@
 			RequiredVersion: lastVersion,
 		}
 	}
+
 	return nil
 }
diff --git a/database/sql.go b/database/sql.go
--- a/database/sql.go
+++ b/database/sql.go
@@ -73,6 +73,7 @@
 		return err
 	}
 	SQLTrace(log, sqlQuery, args)
+
 	return e.GetContext(ctx, obj, sqlQuery, args...)
 }
 
@@ -90,6 +91,7 @@
 		return err
 	}
 	SQLTrace(log, sqlQuery, args)
+
 	return e.SelectContext(ctx, obj, sqlQuery, args...)
 }
 
@@ -107,6 +109,7 @@
 		return nil, err
 	}
 	SQLTrace(log, sqlQuery, args)
+
 	return e.ExecContext(ctx, sqlQuery, args...)
 }
 
@@ -119,6 +122,7 @@
 		return nil, err
 	}
 	SQLTrace(log, sqlQuery, args)
+
 	return e.QueryxContext(ctx, sqlQuery, args...)
 }
 
@@ -130,6 +134,7 @@
 	for i, column := range columns {
 		values[column] = valuesList[i]
 	}
+
 	return values
 }
 
@@ -143,6 +148,7 @@
 		Update(m.Table()).
 		SetMap(ValuesMap(m, columns...)).Where(
 		squirrel.Eq{m.PKeyColumn(): m.Values(m.PKeyColumn())})
+
 	return q
 }
 
@@ -164,7 +170,7 @@
 
 	updateParts := strings.Split(updateSQL, " SET ")
 	if len(updateParts) != 2 {
-		panic("Could not split the UPDATE query: " + updateSQL) 
+		panic("Could not split the UPDATE query: " + updateSQL)
 	}
 	suffix := "ON CONFLICT (" + m.PKeyColumn() + ") DO UPDATE SET " + updateParts[1]
 
@@ -174,6 +180,7 @@
 		Columns(insertColumns...).
 		Values(m.Values(insertColumns...)...).
 		Suffix(suffix, updateArgs...)
+
 	return q
 }
 
@@ -189,7 +196,7 @@
 
 	updateParts := strings.Split(updateSQL, " SET ")
 	if len(updateParts) != 2 {
-		panic("Could not split the UPDATE query: " + updateSQL) 
+		panic("Could not split the UPDATE query: " + updateSQL)
 	}
 	suffix := "ON CONFLICT (" + strings.Join(keyCols, ",") + ") DO UPDATE SET " + updateParts[1]
 
@@ -200,6 +207,7 @@
 		Columns(allColumns...).
 		Values(m.Values(allColumns...)...).
 		Suffix(suffix, updateArgs...)
+
 	return q
 }
 
@@ -212,6 +220,7 @@
 	for _, m := range instances {
 		q = q.Values(m.Values(allColumns...)...)
 	}
+
 	return q
 }
 
@@ -225,6 +234,7 @@
 	for _, m := range instances {
 		q = q.Values(m.Values(allColumns...)...)
 	}
+
 	return q
 }
 
@@ -234,6 +244,7 @@
 	for i, name := range columns {
 		prefixed[i] = PrefixColumn(table, name)
 	}
+
 	return columns
 }
 
diff --git a/database/sql_helper.go b/database/sql_helper.go
--- a/database/sql_helper.go
+++ b/database/sql_helper.go
@@ -28,6 +28,7 @@
 
 func (h *SQLHelper) GetRaw(obj interface{}, sql string, args ...interface{}) error {
 	SQLTrace(&h.log, sql, args)
+
 	return h.sqle.GetContext(h.ctx, obj, sql, args...)
 }
 
@@ -72,6 +73,7 @@
 		Where(pred, args...)
 
 	_, err := h.Exec(query)
+
 	return err
 }
 
@@ -94,6 +96,7 @@
 
 func (h *SQLHelper) SelectRaw(obj interface{}, sql string, args ...interface{}) error {
 	SQLTrace(&h.log, sql, args)
+
 	return h.sqle.SelectContext(h.ctx, obj, sql, args...)
 }
 
@@ -104,6 +107,7 @@
 
 func (h *SQLHelper) ExecRaw(sql string, args ...interface{}) (sql.Result, error) {
 	SQLTrace(&h.log, sql, args)
+
 	return h.sqle.ExecContext(h.ctx, sql, args...)
 }
 
@@ -115,18 +119,21 @@
 // QueryRaw executes a raw SQL query.
 func (h *SQLHelper) QueryRaw(sql string, args ...interface{}) (*sqlx.Rows, error) {
 	SQLTrace(&h.log, sql, args)
+
 	return h.sqle.QueryxContext(h.ctx, sql, args...)
 }
 
 // Insert inserts a Mapped into the db.
 func (h *SQLHelper) Insert(instances ...Mapped) (sql.Result, error) {
 	query := SQLInsert(instances...)
+
 	return h.Exec(query)
 }
 
 // InsertNoPKey inserts a Mapped into the db.
 func (h *SQLHelper) InsertNoPKey(instances ...Mapped) (sql.Result, error) {
 	query := SQLInsertNoPKey(instances...)
+
 	return h.Exec(query)
 }
 
@@ -138,6 +145,7 @@
 			return err
 		}
 	}
+
 	return nil
 }
 
@@ -149,6 +157,7 @@
 			return err
 		}
 	}
+
 	return nil
 }
 
@@ -161,6 +170,7 @@
 			return err
 		}
 	}
+
 	return nil
 }
 
@@ -170,6 +180,7 @@
 	if _, err := h.Exec(query); err != nil {
 		return err
 	}
+
 	return nil
 }
 
@@ -181,6 +192,7 @@
 			return err
 		}
 	}
+
 	return nil
 }
 
@@ -210,5 +222,6 @@
 	if _, err := h.Exec(sq.Delete(table).Where(filter)); err != nil {
 		return err
 	}
+
 	return nil
 }
diff --git a/database/test.go b/database/test.go
--- a/database/test.go
+++ b/database/test.go
@@ -17,21 +17,23 @@
 const dbLockID = 15104
 
 func getDSN(tb testing.TB) string {
+	tb.Helper()
 	dsn := os.Getenv("TEST_DB_DSN")
 	if dsn == "" {
 		tb.Fatal("Please define a TEST_DB_DSN environment variable")
 	}
+
 	return dsn
 }
 
-
-func clearDB(ctx context.Context, t testing.TB, c *sqlx.Conn, dsn string) {
+func clearDB(ctx context.Context, tb testing.TB, c *sqlx.Conn) {
+	tb.Helper()
 	// Drop all tables, and reinit
 	if _, err := c.ExecContext(ctx, "DROP SCHEMA IF EXISTS public CASCADE"); err != nil {
-		t.Fatal(err)
+		tb.Fatal(err)
 	}
 	if _, err := c.ExecContext(ctx, "CREATE SCHEMA public"); err != nil {
-		t.Fatal(err)
+		tb.Fatal(err)
 	}
 }
 
@@ -46,8 +48,10 @@
 
 // SetTB changes the current tb and returns a function to restore the original one.
 func (db *TestDB) SetTB(tb testing.TB) func() {
+	tb.Helper()
 	save := db.tb
 	db.tb = tb
+
 	return func() {
 		db.tb = save
 	}
@@ -67,7 +71,7 @@
 
 	for _, name := range dbtablenames {
 		if _, err := tx.Exec(
-			"DELETE FROM " + name, 
+			"DELETE FROM " + name,
 		); err != nil {
 			db.tb.Fatal(err)
 		}
@@ -91,6 +95,7 @@
 }
 
 func GetTestDBNoInit(ctx context.Context, tb testing.TB) *TestDB {
+	tb.Helper()
 	var success bool
 
 	dsn := getDSN(tb)
@@ -131,27 +136,30 @@
 
 // GetTestDB creates a db and returns it. It must be closed within the test.
 // If it fails, t.Fatal() is called.
-func GetTestDB(ctx context.Context, t testing.TB, sourceDriver source.Driver) *TestDB {
-	db := GetTestDBNoClear(ctx, t, sourceDriver)
+func GetTestDB(ctx context.Context, tb testing.TB, sourceDriver source.Driver) *TestDB {
+	tb.Helper()
+	db := GetTestDBNoClear(ctx, tb, sourceDriver)
 	db.ClearDB()
+
 	return db
 }
 
-func GetTestDBNoClear(ctx context.Context, t testing.TB, sourceDriver source.Driver) *TestDB {
+func GetTestDBNoClear(ctx context.Context, tb testing.TB, sourceDriver source.Driver) *TestDB {
+	tb.Helper()
 	var success bool
 
-	dsn := getDSN(t)
+	dsn := getDSN(tb)
 
 	db, err := Open(dsn, 0)
 	if err != nil {
-		t.Fatal(err)
+		tb.Fatal(err)
 	}
 
 	defer func() {
 		if !success {
 			if ctx.Err() == nil {
 				if err := db.Close(); err != nil {
-					t.Log("Error closing db:", err)
+					tb.Log("Error closing db:", err)
 				}
 			}
 		}
@@ -159,13 +167,13 @@
 
 	c, err := db.Connx(ctx)
 	if err != nil {
-		t.Fatal(err)
+		tb.Fatal(err)
 	}
 
 	defer func() {
 		if !success {
 			if err := c.Close(); err != nil {
-				t.Log("Error closing conn:", err)
+				tb.Log("Error closing conn:", err)
 			}
 		}
 	}()
@@ -174,25 +182,25 @@
 		ctx,
 		"SELECT pg_advisory_lock($1)", dbLockID,
 	); err != nil {
-		t.Fatal(err)
+		tb.Fatal(err)
 	}
 
 	if len(dbtablenames) == 0 {
-		clearDB(ctx, t, c, dsn)
+		clearDB(ctx, tb, c)
 
 		m, err := NewMigrate(dsn, sourceDriver)
 		if err != nil {
-			t.Fatal(err)
+			tb.Fatal(err)
 		}
 		if err := m.Up(); err != nil {
-			t.Fatal(err)
+			tb.Fatal(err)
 		}
 		if srcErr, dbErr := m.Close(); srcErr != nil || dbErr != nil {
-			t.Fatal(srcErr, dbErr)
+			tb.Fatal(srcErr, dbErr)
 		}
 	}
 
-	testDB := TestDB{db, dsn, ctx, t, c}
+	testDB := TestDB{db, dsn, ctx, tb, c}
 	if len(dbtablenames) == 0 {
 		if err := db.Select(&dbtablenames,
 			"SELECT tablename "+
@@ -200,11 +208,12 @@
 				"WHERE schemaname = 'public' "+
 				"AND tablename <> 'schema_migrations';",
 		); err != nil {
-			t.Fatal(err)
+			tb.Fatal(err)
 		}
 	}
 
 	success = true
+
 	return &testDB
 }
 
diff --git a/database/tx.go b/database/tx.go
--- a/database/tx.go
+++ b/database/tx.go
@@ -2,7 +2,7 @@
 
 import (
 	"context"
-	"fmt"
+	"errors"
 
 	"github.com/jmoiron/sqlx"
 	"github.com/rs/zerolog"
@@ -26,6 +26,7 @@
 	if err != nil {
 		return nil, err
 	}
+
 	return &Tx{tx, TxOpened}, nil
 }
 
@@ -39,18 +40,20 @@
 // Commit commits the transaction.
 func (tx *Tx) Commit() error {
 	if tx.state != TxOpened {
-		return fmt.Errorf("transaction is not open")
+		return errors.New("transaction is not open")
 	}
 	tx.state = TxCommitted
+
 	return tx.Tx.Commit()
 }
 
 // Rollback rollbacks the transaction.
 func (tx *Tx) Rollback() error {
 	if tx.state != TxOpened {
-		return fmt.Errorf("transaction is not open")
+		return errors.New("transaction is not open")
 	}
 	tx.state = TxRolledback
+
 	return tx.Tx.Rollback()
 }
 
diff --git a/log-console-writer.go b/log-console-writer.go
--- a/log-console-writer.go
+++ b/log-console-writer.go
@@ -114,7 +114,7 @@
 	d.UseNumber()
 	err = d.Decode(&evt)
 	if err != nil {
-		return n, fmt.Errorf("cannot decode event: %s", err)
+		return n, fmt.Errorf("cannot decode event: %w", err)
 	}
 
 	for _, p := range w.PartsOrder {
@@ -128,6 +128,7 @@
 		return n, err
 	}
 	_, err = buf.WriteTo(w.Out)
+
 	return len(p), err
 }
 
@@ -175,7 +176,8 @@
 		var fn Formatter
 		var fv Formatter
 
-		if field == zerolog.ErrorFieldName {
+		switch field {
+		case zerolog.ErrorFieldName:
 			if w.FormatErrFieldName == nil {
 				fn = consoleDefaultFormatErrFieldName(w.NoColor)
 			} else {
@@ -187,7 +189,7 @@
 			} else {
 				fv = w.FormatErrFieldValue
 			}
-		} else if field == ExceptionFieldName {
+		case ExceptionFieldName:
 			if w.FormatExcFieldName == nil {
 				fn = consoleDefaultFormatExcFieldName(w.NoColor)
 			} else {
@@ -199,7 +201,7 @@
 			} else {
 				fv = w.FormatExcFieldValue
 			}
-		} else {
+		default:
 			if w.FormatFieldName == nil {
 				fn = consoleDefaultFormatFieldName(w.NoColor)
 			} else {
@@ -293,6 +295,7 @@
 			return true
 		}
 	}
+
 	return false
 }
 
@@ -301,6 +304,7 @@
 	if disabled {
 		return fmt.Sprintf("%s", s)
 	}
+
 	return fmt.Sprintf("\x1b[%dm%v\x1b[0m", c, s)
 }
 
@@ -319,6 +323,7 @@
 	if timeFormat == "" {
 		timeFormat = consoleDefaultTimeFormat
 	}
+
 	return func(i interface{}) string {
 		t := "<nil>"
 		switch tt := i.(type) {
@@ -347,6 +352,7 @@
 				t = ts.Format(timeFormat)
 			}
 		}
+
 		return colorize(t, colorDarkGray, noColor)
 	}
 }
@@ -380,6 +386,7 @@
 				l = strings.ToUpper(fmt.Sprintf("%s", i))[0:3]
 			}
 		}
+
 		return l
 	}
 }
@@ -398,6 +405,7 @@
 			}
 			c = colorize(c, colorBold, noColor) + colorize(" >", colorCyan, noColor)
 		}
+
 		return c
 	}
 }
@@ -406,6 +414,7 @@
 	if i == nil {
 		return ""
 	}
+
 	return fmt.Sprintf("%s", i)
 }
 
@@ -454,10 +463,12 @@
 					for _, frame := range e.Stacktrace.Frames {
 						s += PrintFrame(frame)
 					}
+
 					return s
 				}
 			}
 		}
+
 		return colorize(fmt.Sprintf("%s", i), colorRed, noColor)
 	}
 }
diff --git a/log-console-writer_test.go b/log-console-writer_test.go
--- a/log-console-writer_test.go
+++ b/log-console-writer_test.go
@@ -1,4 +1,4 @@
-package orusapi
+package orusapi_test
 
 import (
 	"bytes"
@@ -14,17 +14,19 @@
 	"github.com/getsentry/sentry-go"
 	"github.com/rs/zerolog"
 	"github.com/stretchr/testify/assert"
+
+	"orus.io/orus-io/go-orusapi"
 )
 
 func ExampleConsoleWriter() {
-	log := zerolog.New(ConsoleWriter{Out: os.Stdout, NoColor: true})
+	log := zerolog.New(orusapi.ConsoleWriter{Out: os.Stdout, NoColor: true})
 
 	log.Info().Str("foo", "bar").Msg("Hello World")
 	// Output: <nil> INF Hello World foo=bar
 }
 
 func ExampleConsoleWriter_customFormatters() {
-	out := ConsoleWriter{Out: os.Stdout, NoColor: true}
+	out := orusapi.ConsoleWriter{Out: os.Stdout, NoColor: true}
 	out.FormatLevel = func(i interface{}) string { return strings.ToUpper(fmt.Sprintf("%-6s|", i)) }
 	out.FormatFieldName = func(i interface{}) string { return fmt.Sprintf("%s:", i) }
 	out.FormatFieldValue = func(i interface{}) string { return strings.ToUpper(fmt.Sprintf("%s", i)) }
@@ -44,8 +46,8 @@
 }
 
 func ExampleNewConsoleWriter_customFormatters() {
-	out := NewConsoleWriter(
-		func(w *ConsoleWriter) {
+	out := orusapi.NewConsoleWriter(
+		func(w *orusapi.ConsoleWriter) {
 			// Customize time format
 			w.TimeFormat = time.RFC822
 			// Customize level formatting
@@ -63,13 +65,14 @@
 func TestConsoleLogger(t *testing.T) {
 	t.Run("Numbers", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		log := zerolog.New(ConsoleWriter{Out: buf, NoColor: true})
+		log := zerolog.New(orusapi.ConsoleWriter{Out: buf, NoColor: true})
 		log.Info().
 			Float64("float", 1.23).
 			Uint64("small", 123).
 			Uint64("big", 1152921504606846976).
 			Msg("msg")
-		if got, want := strings.TrimSpace(buf.String()), "<nil> INF msg big=1152921504606846976 float=1.23 small=123"; got != want {
+		if got, want := strings.TrimSpace(buf.String()),
+			"<nil> INF msg big=1152921504606846976 float=1.23 small=123"; got != want {
 			t.Errorf("\ngot:\n%s\nwant:\n%s", got, want)
 		}
 	})
@@ -78,7 +81,7 @@
 func TestConsoleWriter(t *testing.T) {
 	t.Run("Default field formatter", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true, PartsOrder: []string{"foo"}}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true, PartsOrder: []string{"foo"}}
 
 		_, err := w.Write([]byte(`{"foo": "DEFAULT"}`))
 		if err != nil {
@@ -94,7 +97,7 @@
 
 	t.Run("Write colorized", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: false}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: false}
 
 		_, err := w.Write([]byte(`{"level": "warn", "message": "Foobar"}`))
 		if err != nil {
@@ -110,7 +113,7 @@
 
 	t.Run("Write fields", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		d := time.Unix(0, 0).UTC().Format(time.RFC3339)
 		_, err := w.Write([]byte(`{"time": "` + d + `", "level": "debug", "message": "Foobar", "foo": "bar"}`))
@@ -133,7 +136,7 @@
 		zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
 
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, TimeFormat: time.StampMilli, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, TimeFormat: time.StampMilli, NoColor: true}
 
 		_, err := w.Write([]byte(`{"time": 1234, "level": "debug", "message": "Foobar", "foo": "bar"}`))
 		if err != nil {
@@ -155,7 +158,7 @@
 		zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
 
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, TimeFormat: time.StampMilli, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, TimeFormat: time.StampMilli, NoColor: true}
 
 		_, err := w.Write([]byte(`{"time": 1234567, "level": "debug", "message": "Foobar", "foo": "bar"}`))
 		if err != nil {
@@ -177,7 +180,7 @@
 		zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMicro
 
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, TimeFormat: time.StampMicro, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, TimeFormat: time.StampMicro, NoColor: true}
 
 		_, err := w.Write([]byte(`{"time": 1234567891, "level": "debug", "message": "Foobar", "foo": "bar"}`))
 		if err != nil {
@@ -193,7 +196,7 @@
 
 	t.Run("No message field", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		_, err := w.Write([]byte(`{"level": "debug", "foo": "bar"}`))
 		if err != nil {
@@ -209,7 +212,7 @@
 
 	t.Run("No level field", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		_, err := w.Write([]byte(`{"message": "Foobar", "foo": "bar"}`))
 		if err != nil {
@@ -225,7 +228,7 @@
 
 	t.Run("Write colorized fields", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: false}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: false}
 
 		_, err := w.Write([]byte(`{"level": "warn", "message": "Foobar", "foo": "bar"}`))
 		if err != nil {
@@ -241,7 +244,7 @@
 
 	t.Run("Write error field", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		d := time.Unix(0, 0).UTC().Format(time.RFC3339)
 		evt := `{"time": "` + d + `", "level": "error", "message": "Foobar", "aaa": "bbb", "error": "Error"}`
@@ -261,7 +264,7 @@
 
 	t.Run("Write caller field", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		cwd, err := os.Getwd()
 		if err != nil {
@@ -269,7 +272,9 @@
 		}
 
 		d := time.Unix(0, 0).UTC().Format(time.RFC3339)
-		evt := `{"time": "` + d + `", "level": "debug", "message": "Foobar", "foo": "bar", "caller": "` + cwd + `/foo/bar.go"}`
+		evt := `{"time": "` + d +
+			`", "level": "debug", "message": "Foobar", "foo": "bar", "caller": "` +
+			cwd + `/foo/bar.go"}`
 		// t.Log(evt)
 
 		_, err = w.Write([]byte(evt))
@@ -286,7 +291,7 @@
 
 	t.Run("Write JSON field", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		evt := `{"level": "debug", "message": "Foobar", "foo": [1, 2, 3], "bar": true}`
 		// t.Log(evt)
@@ -305,7 +310,7 @@
 
 	t.Run("Write exception", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true}
 
 		b := debug.Stack()
 		t.Log(string(b))
@@ -317,7 +322,8 @@
 			t.FailNow()
 		}
 
-		evt := `{"level": "error", "message": "Foobar", "exception": {"type": "any", "value": "error!", "stacktrace": ` + string(b) + `}}`
+		evt := `{"level": "error", "message": "Foobar", "exception": {"type": "any", "value": "error!", "stacktrace": ` +
+			string(b) + `}}`
 
 		_, err = w.Write([]byte(evt))
 		if err != nil {
@@ -327,8 +333,8 @@
 		wd, err := os.Getwd()
 		assert.NoError(t, err)
 		expectedOutput := fmt.Sprintf(`<nil> ERR Foobar exception=error!(any)
-orus.io/orus-io/go-orusapi.TestConsoleWriter.func13
-    %s/log-console-writer_test.go:313
+orus.io/orus-io/go-orusapi_test.TestConsoleWriter.func13
+    %s/log-console-writer_test.go:318
 
 `, wd)
 		actualOutput := buf.String()
@@ -342,7 +348,7 @@
 func TestConsoleWriterConfiguration(t *testing.T) {
 	t.Run("Sets TimeFormat", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true, TimeFormat: time.RFC3339}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true, TimeFormat: time.RFC3339}
 
 		d := time.Unix(0, 0).UTC().Format(time.RFC3339)
 		evt := `{"time": "` + d + `", "level": "info", "message": "Foobar"}`
@@ -361,7 +367,7 @@
 
 	t.Run("Sets PartsOrder", func(t *testing.T) {
 		buf := &bytes.Buffer{}
-		w := ConsoleWriter{Out: buf, NoColor: true, PartsOrder: []string{"message", "level"}}
+		w := orusapi.ConsoleWriter{Out: buf, NoColor: true, PartsOrder: []string{"message", "level"}}
 
 		evt := `{"level": "info", "message": "Foobar"}`
 		_, err := w.Write([]byte(evt))
@@ -383,7 +389,7 @@
 
 	msg := []byte(`{"level": "info", "foo": "bar", "message": "HELLO", "time": "1990-01-01"}`)
 
-	w := ConsoleWriter{Out: io.Discard, NoColor: false}
+	w := orusapi.ConsoleWriter{Out: io.Discard, NoColor: false}
 
 	for i := 0; i < b.N; i++ {
 		_, _ = w.Write(msg)
diff --git a/log_middlewares.go b/log_middlewares.go
--- a/log_middlewares.go
+++ b/log_middlewares.go
@@ -21,11 +21,13 @@
 		hlog.AccessHandler(func(r *http.Request, status, size int, duration time.Duration) {
 			log := hlog.FromRequest(r)
 			var event *zerolog.Event
-			if status >= http.StatusInternalServerError {
+			//nolint:zerologlint
+			switch {
+			case status >= http.StatusInternalServerError:
 				event = log.Error()
-			} else if status >= http.StatusBadRequest {
+			case status >= http.StatusBadRequest:
 				event = log.WithLevel(status4XXLogLevel)
-			} else {
+			default:
 				event = log.Info()
 			}
 			event.
diff --git a/logging.go b/logging.go
--- a/logging.go
+++ b/logging.go
@@ -15,6 +15,7 @@
 	if err := o.Setup(log, output); err != nil {
 		return nil, err
 	}
+
 	return &o, nil
 }
 
@@ -23,6 +24,7 @@
 	if err != nil {
 		panic(err)
 	}
+
 	return o
 }
 
@@ -106,6 +108,7 @@
 			return fmt.Errorf("invalid log-format: %s", format)
 		}
 		o.resetOutput()
+
 		return nil
 	}
 	o.Verbose = func() {
@@ -130,6 +133,7 @@
 			return err
 		}
 		*o.log = o.log.Level(level)
+
 		return nil
 	}
 	if err := o.Format("auto"); err != nil {
@@ -139,5 +143,6 @@
 		return err
 	}
 	logLevelAutoLocked = true
+
 	return nil
 }
diff --git a/logging_test.go b/logging_test.go
--- a/logging_test.go
+++ b/logging_test.go
@@ -1,4 +1,4 @@
-package orusapi
+package orusapi_test
 
 import (
 	"bytes"
@@ -7,6 +7,8 @@
 	"github.com/rs/zerolog"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
+
+	"orus.io/orus-io/go-orusapi"
 )
 
 func TestLogging(t *testing.T) {
@@ -15,25 +17,25 @@
 		log zerolog.Logger
 	)
 
-	var o LoggingOptions
+	var o orusapi.LoggingOptions
 	require.NoError(t, o.Setup(&log, &buf))
 
-	assert.Equal(t, zerolog.WarnLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.WarnLevel, o.Logger().GetLevel())
 
 	o.Verbose()
-	assert.Equal(t, zerolog.InfoLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.InfoLevel, o.Logger().GetLevel())
 
 	o.Verbose()
-	assert.Equal(t, zerolog.DebugLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.DebugLevel, o.Logger().GetLevel())
 
 	o.Verbose()
-	assert.Equal(t, zerolog.TraceLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.TraceLevel, o.Logger().GetLevel())
 
 	require.NoError(t, o.Level("fatal"))
-	assert.Equal(t, zerolog.FatalLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.FatalLevel, o.Logger().GetLevel())
 
 	require.NoError(t, o.Level("info"))
-	assert.Equal(t, zerolog.InfoLevel, o.log.GetLevel())
+	assert.Equal(t, zerolog.InfoLevel, o.Logger().GetLevel())
 
 	require.NoError(t, o.Format("pretty"))
 	log.Warn().Msg("this is a warning")
diff --git a/prometheus_middleware.go b/prometheus_middleware.go
--- a/prometheus_middleware.go
+++ b/prometheus_middleware.go
@@ -16,6 +16,7 @@
 		return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
 			if strings.HasPrefix(r.URL.Path, path) {
 				handler.ServeHTTP(rw, r)
+
 				return
 			}
 
@@ -23,6 +24,7 @@
 				rw.Header().Set("Content-Type", "text/plain")
 				rw.WriteHeader(http.StatusNotFound)
 				_, _ = rw.Write([]byte(fmt.Sprintf("%q not found", path)))
+
 				return
 			}
 			next.ServeHTTP(rw, r)
diff --git a/redoc.go b/redoc.go
--- a/redoc.go
+++ b/redoc.go
@@ -60,6 +60,7 @@
 				rw.WriteHeader(http.StatusOK)
 
 				_, _ = rw.Write(b)
+
 				return
 			}
 
@@ -67,6 +68,7 @@
 				rw.Header().Set("Content-Type", "text/plain")
 				rw.WriteHeader(http.StatusNotFound)
 				_, _ = rw.Write([]byte(fmt.Sprintf("%q not found", pth)))
+
 				return
 			}
 			next.ServeHTTP(rw, r)
diff --git a/scripts/generate_db_helpers.go b/scripts/generate_db_helpers.go
--- a/scripts/generate_db_helpers.go
+++ b/scripts/generate_db_helpers.go
@@ -36,6 +36,7 @@
 			fields = append(fields, field)
 		}
 	}
+
 	return fields
 }
 
@@ -105,6 +106,7 @@
 			file,
 			func(name, doc string, structType *ast.StructType) error {
 				topLevel.AllStructs[name] = structType
+
 				return nil
 			}); err != nil {
 			panic(err)
@@ -116,6 +118,7 @@
 			file,
 			func(dbstruct DBStruct) error {
 				topLevel.DBStructs = append(topLevel.DBStructs, dbstruct)
+
 				return nil
 			}); err != nil {
 			panic(err)
@@ -155,6 +158,7 @@
 			}
 		}
 	}
+
 	return nil
 }
 
@@ -172,6 +176,7 @@
 			if dbstruct != nil {
 				return visit(*dbstruct)
 			}
+
 			return nil
 		})
 }
@@ -182,6 +187,7 @@
 			return line
 		}
 	}
+
 	return ""
 }
 
@@ -191,7 +197,7 @@
 	}
 	tags, err := structtag.Parse(tag)
 	if err != nil {
-		return nil, fmt.Errorf("error parsing tag `%s`: %s", tag, err)
+		return nil, fmt.Errorf("error parsing tag `%s`: %w", tag, err)
 	}
 
 	tableTag, err := tags.Get("dbtable")
@@ -231,9 +237,10 @@
 }
 
 func getDBFields(topLevel *Package, structType *ast.StructType) ([]DBField, error) {
-	var dbfields []DBField
+	allFields := topLevel.getAllFields(structType)
+	dbfields := make([]DBField, 0, len(allFields))
 
-	for _, field := range topLevel.getAllFields(structType) {
+	for _, field := range allFields {
 		if field.Tag == nil || len(field.Tag.Value) < 2 {
 			continue
 		}
diff --git a/sentry.go b/sentry.go
--- a/sentry.go
+++ b/sentry.go
@@ -25,6 +25,7 @@
 		})
 		if err != nil {
 			log.Err(err).Msg("Could not initialize sentry")
+
 			return
 		}
 		hub := sentry.NewHub(client, sentry.NewScope())
@@ -34,9 +35,10 @@
 				return SentryLogger{hub, next, &sentryOptions}
 			})
 		// OnShutdown(func() {
-		//hub.Flush(time.Second)
-		//})
+		// hub.Flush(time.Second)
+		// })
 	}
+
 	return &sentryOptions
 }
 
@@ -60,6 +62,7 @@
 			return buildEvent(tagNames, p)
 		}
 	}
+
 	return nil
 }
 
@@ -99,6 +102,7 @@
 				default:
 					event.Extra["user."+field] = iter.Read()
 				}
+
 				return true
 			}) {
 				return false
@@ -121,11 +125,13 @@
 						value = value[:200]
 					}
 					event.Tags[tag] = value
+
 					return true
 				}
 			}
 			event.Extra[field] = iter.Read()
 		}
+
 		return true
 	}) {
 		return nil
@@ -136,13 +142,15 @@
 	} else if event.Request != nil && event.Request.Method != "" {
 		event.Message = event.Request.Method + " " + event.Request.URL + ": " + event.Message
 	}
+
 	return event
 }
 
 // Write ...
-func (l SentryLogger) Write(p []byte) (n int, err error) {
+func (l SentryLogger) Write(p []byte) (int, error) {
 	if event := buildEventIfLevelGtWarn(l.options.TagNames, p); event != nil {
 		l.hub.CaptureEvent(event)
 	}
+
 	return l.next.Write(p)
 }
diff --git a/server.go b/server.go
--- a/server.go
+++ b/server.go
@@ -7,7 +7,6 @@
 	"crypto/tls"
 	"crypto/x509"
 	"errors"
-	"fmt"
 	"net"
 	"net/http"
 	"os"
@@ -55,6 +54,7 @@
 	s.shutdown = make(chan struct{})
 	s.api = api
 	s.interrupt = make(chan os.Signal, 1)
+
 	return s
 }
 
@@ -122,6 +122,7 @@
 	if api == nil {
 		s.api = nil
 		s.handler = nil
+
 		return
 	}
 
@@ -139,6 +140,7 @@
 			return true
 		}
 	}
+
 	return false
 }
 
@@ -273,7 +275,7 @@
 			caCertPool := x509.NewCertPool()
 			ok := caCertPool.AppendCertsFromPEM(caCert)
 			if !ok {
-				return fmt.Errorf("cannot parse CA certificate")
+				return errors.New("cannot parse CA certificate")
 			}
 			httpsServer.TLSConfig.ClientCAs = caCertPool
 			httpsServer.TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert
@@ -288,6 +290,7 @@
 				if s.TLSCertificateKey == "" {
 					return errors.New("the required flags `--tls-certificate` and `--tls-key` were not specified")
 				}
+
 				return errors.New("the required flag `--tls-certificate` was not specified")
 			}
 			if s.TLSCertificateKey == "" {
@@ -318,6 +321,7 @@
 	go s.handleShutdown(wg, &servers)
 
 	wg.Wait()
+
 	return nil
 }
 
@@ -389,6 +393,7 @@
 	}
 
 	s.hasListeners = true
+
 	return nil
 }
 
@@ -397,6 +402,7 @@
 	if atomic.CompareAndSwapInt32(&s.shuttingDown, 0, 1) {
 		close(s.shutdown)
 	}
+
 	return nil
 }
 
@@ -462,6 +468,7 @@
 			return nil, err
 		}
 	}
+
 	return s.domainSocketL, nil
 }
 
@@ -472,6 +479,7 @@
 			return nil, err
 		}
 	}
+
 	return s.httpServerL, nil
 }
 
@@ -482,6 +490,7 @@
 			return nil, err
 		}
 	}
+
 	return s.httpsServerL, nil
 }
 
@@ -490,6 +499,7 @@
 		for range s.interrupt {
 			if s.interrupted {
 				s.Logf("Server already shutting down")
+
 				continue
 			}
 			s.interrupted = true
diff --git a/testutils/defered_errcheck.go b/testutils/defered_errcheck.go
--- a/testutils/defered_errcheck.go
+++ b/testutils/defered_errcheck.go
@@ -8,5 +8,6 @@
 
 // DeferedErrCheck ...
 func DeferedErrCheck(tb testing.TB, cb func() error) {
+	tb.Helper()
 	assert.NoError(tb, cb())
 }
diff --git a/testutils/logger.go b/testutils/logger.go
--- a/testutils/logger.go
+++ b/testutils/logger.go
@@ -9,6 +9,8 @@
 
 // NewTestLogger creates a TestLogger.
 func NewTestLogger(tb testing.TB) *TestLogger {
+	tb.Helper()
+
 	return &TestLogger{tb}
 }
 
@@ -26,6 +28,7 @@
 	if os.Getenv("TEST_QUIET") != "" {
 		level = zerolog.InfoLevel
 	}
+
 	return zerolog.New(zerolog.ConsoleWriter{Out: tl}).
 		With().Timestamp().Logger().
 		Level(level)
@@ -34,14 +37,17 @@
 // Write writes the given string to t.Logf.
 func (tl *TestLogger) Write(m []byte) (int, error) {
 	tl.tb.Logf(string(m))
+
 	return len(m), nil
 }
 
 // SetTB changes the current TB, and returns a function to get back to the
 // previous one.
 func (tl *TestLogger) SetTB(tb testing.TB) func() {
+	tb.Helper()
 	otb := tl.tb
 	tl.tb = tb
+
 	return func() {
 		tl.tb = otb
 	}
@@ -49,5 +55,7 @@
 
 // GetLogger returns a test Logger.
 func GetLogger(tb testing.TB) zerolog.Logger {
+	tb.Helper()
+
 	return NewTestLogger(tb).Logger()
 }
diff --git a/version.go b/version.go
--- a/version.go
+++ b/version.go
@@ -24,6 +24,7 @@
 
 func InjectVersion(versionTag, vcsCommit string) func(json.RawMessage) json.RawMessage {
 	jsonFixVersionAttribute := JSONFixVersionAttribute(versionTag, vcsCommit)
+
 	return func(swaggerJSON json.RawMessage) json.RawMessage {
 		return versionAttrRe.ReplaceAllFunc(swaggerJSON, jsonFixVersionAttribute)
 	}
@@ -40,5 +41,6 @@
 	if err := json.Unmarshal(swaggerJSON, &sv); err != nil {
 		panic(err)
 	}
+
 	return sv.Info.Version
 }