diff --git a/backend/v3/storage/database/dialect/postgres/conn.go b/backend/v3/storage/database/dialect/postgres/conn.go index a556b7a545..fd6dfbf193 100644 --- a/backend/v3/storage/database/dialect/postgres/conn.go +++ b/backend/v3/storage/database/dialect/postgres/conn.go @@ -33,6 +33,7 @@ func (c *pgxConn) Begin(ctx context.Context, opts *database.TransactionOptions) // Query implements sql.Client. // Subtle: this method shadows the method (*Conn).Query of pgxConn.Conn. func (c *pgxConn) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := c.Conn.Query(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/dialect/postgres/pool.go b/backend/v3/storage/database/dialect/postgres/pool.go index bf4ca44c31..cfbd59d8ff 100644 --- a/backend/v3/storage/database/dialect/postgres/pool.go +++ b/backend/v3/storage/database/dialect/postgres/pool.go @@ -33,6 +33,7 @@ func (c *pgxPool) Acquire(ctx context.Context) (database.Client, error) { // Query implements [database.Pool]. // Subtle: this method shadows the method (Pool).Query of pgxPool.Pool. func (c *pgxPool) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := c.Pool.Query(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/dialect/postgres/tx.go b/backend/v3/storage/database/dialect/postgres/tx.go index 6a330c16b9..db926e965b 100644 --- a/backend/v3/storage/database/dialect/postgres/tx.go +++ b/backend/v3/storage/database/dialect/postgres/tx.go @@ -40,6 +40,7 @@ func (tx *pgxTx) End(ctx context.Context, err error) error { // Query implements [database.Transaction]. // Subtle: this method shadows the method (Tx).Query of pgxTx.Tx. func (tx *pgxTx) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := tx.Tx.Query(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/dialect/sql/conn.go b/backend/v3/storage/database/dialect/sql/conn.go index 967ed2d1e8..9a7d6d1ddd 100644 --- a/backend/v3/storage/database/dialect/sql/conn.go +++ b/backend/v3/storage/database/dialect/sql/conn.go @@ -30,6 +30,7 @@ func (c *sqlConn) Begin(ctx context.Context, opts *database.TransactionOptions) // Query implements sql.Client. // Subtle: this method shadows the method (*Conn).Query of pgxConn.Conn. func (c *sqlConn) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := c.QueryContext(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/dialect/sql/pool.go b/backend/v3/storage/database/dialect/sql/pool.go index 0c4a0cac66..a4c31be190 100644 --- a/backend/v3/storage/database/dialect/sql/pool.go +++ b/backend/v3/storage/database/dialect/sql/pool.go @@ -31,6 +31,7 @@ func (c *sqlPool) Acquire(ctx context.Context) (database.Client, error) { // Query implements [database.Pool]. // Subtle: this method shadows the method (Pool).Query of pgxPool.Pool. func (c *sqlPool) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := c.QueryContext(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/dialect/sql/rows.go b/backend/v3/storage/database/dialect/sql/rows.go index b2265ca1ca..d49dc346d2 100644 --- a/backend/v3/storage/database/dialect/sql/rows.go +++ b/backend/v3/storage/database/dialect/sql/rows.go @@ -74,6 +74,5 @@ func (r *Rows) CollectExactlyOneRow(dest any) (err error) { // Close implements [database.Rows]. // Subtle: this method shadows the method (Rows).Close of Rows.Rows. func (r *Rows) Close() error { - r.Rows.Close() - return nil + return r.Rows.Close() } diff --git a/backend/v3/storage/database/dialect/sql/tx.go b/backend/v3/storage/database/dialect/sql/tx.go index c2da0e650b..9a3fbcd403 100644 --- a/backend/v3/storage/database/dialect/sql/tx.go +++ b/backend/v3/storage/database/dialect/sql/tx.go @@ -43,6 +43,7 @@ func (tx *sqlTx) End(ctx context.Context, err error) error { // Query implements [database.Transaction]. // Subtle: this method shadows the method (Tx).Query of pgxTx.Tx. func (tx *sqlTx) Query(ctx context.Context, sql string, args ...any) (database.Rows, error) { + //nolint:sqlclosecheck // Rows.Close is called by the caller rows, err := tx.QueryContext(ctx, sql, args...) if err != nil { return nil, wrapError(err) diff --git a/backend/v3/storage/database/errors.go b/backend/v3/storage/database/errors.go index 7a148e4d54..d51d28aa53 100644 --- a/backend/v3/storage/database/errors.go +++ b/backend/v3/storage/database/errors.go @@ -5,7 +5,7 @@ import ( "fmt" ) -var NoChangesError = errors.New("Update must contain a change") +var ErrNoChanges = errors.New("update must contain a change") // NoRowFoundError is returned when QueryRow does not find any row. // It wraps the dialect specific original error to provide more context. diff --git a/backend/v3/storage/database/repository/instance.go b/backend/v3/storage/database/repository/instance.go index 74277c3879..85123280de 100644 --- a/backend/v3/storage/database/repository/instance.go +++ b/backend/v3/storage/database/repository/instance.go @@ -105,7 +105,7 @@ func (i *instance) Create(ctx context.Context, instance *domain.Instance) error // Update implements [domain.InstanceRepository]. func (i instance) Update(ctx context.Context, id string, changes ...database.Change) (int64, error) { if len(changes) == 0 { - return 0, database.NoChangesError + return 0, database.ErrNoChanges } var builder database.StatementBuilder diff --git a/backend/v3/storage/database/repository/instance_domain.go b/backend/v3/storage/database/repository/instance_domain.go index 12952bea80..462d4528c5 100644 --- a/backend/v3/storage/database/repository/instance_domain.go +++ b/backend/v3/storage/database/repository/instance_domain.go @@ -77,7 +77,7 @@ func (i *instanceDomain) Remove(ctx context.Context, condition database.Conditio // Subtle: this method shadows the method ([domain.InstanceRepository]).Update of instanceDomain.instance. func (i *instanceDomain) Update(ctx context.Context, condition database.Condition, changes ...database.Change) (int64, error) { if len(changes) == 0 { - return 0, database.NoChangesError + return 0, database.ErrNoChanges } var builder database.StatementBuilder diff --git a/backend/v3/storage/database/repository/instance_domain_test.go b/backend/v3/storage/database/repository/instance_domain_test.go index a7de954bae..0c0034d24a 100644 --- a/backend/v3/storage/database/repository/instance_domain_test.go +++ b/backend/v3/storage/database/repository/instance_domain_test.go @@ -475,7 +475,7 @@ func TestUpdateInstanceDomain(t *testing.T) { condition: domainRepo.DomainCondition(database.TextOperationEqual, domainName), changes: []database.Change{}, expected: 0, - err: database.NoChangesError, + err: database.ErrNoChanges, }, } diff --git a/backend/v3/storage/database/repository/org.go b/backend/v3/storage/database/repository/org.go index d1503393ea..cd9071c1ab 100644 --- a/backend/v3/storage/database/repository/org.go +++ b/backend/v3/storage/database/repository/org.go @@ -105,7 +105,7 @@ func (o *org) Create(ctx context.Context, organization *domain.Organization) err // Update implements [domain.OrganizationRepository]. func (o *org) Update(ctx context.Context, id domain.OrgIdentifierCondition, instanceID string, changes ...database.Change) (int64, error) { if len(changes) == 0 { - return 0, database.NoChangesError + return 0, database.ErrNoChanges } builder := database.StatementBuilder{} builder.WriteString(`UPDATE zitadel.organizations SET `) diff --git a/backend/v3/storage/database/repository/org_domain.go b/backend/v3/storage/database/repository/org_domain.go index d9aaaba063..f07e0fcf83 100644 --- a/backend/v3/storage/database/repository/org_domain.go +++ b/backend/v3/storage/database/repository/org_domain.go @@ -67,7 +67,7 @@ func (o *orgDomain) Add(ctx context.Context, domain *domain.AddOrganizationDomai // Subtle: this method shadows the method ([domain.OrganizationRepository]).Update of orgDomain.org. func (o *orgDomain) Update(ctx context.Context, condition database.Condition, changes ...database.Change) (int64, error) { if len(changes) == 0 { - return 0, database.NoChangesError + return 0, database.ErrNoChanges } var builder database.StatementBuilder diff --git a/backend/v3/storage/database/repository/org_domain_test.go b/backend/v3/storage/database/repository/org_domain_test.go index 7aee1aad24..50c407793f 100644 --- a/backend/v3/storage/database/repository/org_domain_test.go +++ b/backend/v3/storage/database/repository/org_domain_test.go @@ -600,7 +600,7 @@ func TestUpdateOrganizationDomain(t *testing.T) { condition: domainRepo.DomainCondition(database.TextOperationEqual, domainName), changes: []database.Change{}, expected: 0, - err: database.NoChangesError, + err: database.ErrNoChanges, }, }