diff --git a/backend/v3/storage/database/dbmock/database.mock.go b/backend/v3/storage/database/dbmock/database.mock.go index 02060efb3f..1ff898257c 100644 --- a/backend/v3/storage/database/dbmock/database.mock.go +++ b/backend/v3/storage/database/dbmock/database.mock.go @@ -157,15 +157,16 @@ func (c *MockPoolCloseCall) DoAndReturn(f func(context.Context) error) *MockPool } // Exec mocks base method. -func (m *MockPool) Exec(arg0 context.Context, arg1 string, arg2 ...any) error { +func (m *MockPool) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) { m.ctrl.T.Helper() varargs := []any{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Exec", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 } // Exec indicates an expected call of Exec. @@ -182,19 +183,19 @@ type MockPoolExecCall struct { } // Return rewrite *gomock.Call.Return -func (c *MockPoolExecCall) Return(arg0 error) *MockPoolExecCall { - c.Call = c.Call.Return(arg0) +func (c *MockPoolExecCall) Return(arg0 int64, arg1 error) *MockPoolExecCall { + c.Call = c.Call.Return(arg0, arg1) return c } // Do rewrite *gomock.Call.Do -func (c *MockPoolExecCall) Do(f func(context.Context, string, ...any) error) *MockPoolExecCall { +func (c *MockPoolExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockPoolExecCall { c.Call = c.Call.Do(f) return c } // DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockPoolExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockPoolExecCall { +func (c *MockPoolExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockPoolExecCall { c.Call = c.Call.DoAndReturn(f) return c } @@ -387,15 +388,16 @@ func (c *MockClientBeginCall) DoAndReturn(f func(context.Context, *database.Tran } // Exec mocks base method. -func (m *MockClient) Exec(arg0 context.Context, arg1 string, arg2 ...any) error { +func (m *MockClient) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) { m.ctrl.T.Helper() varargs := []any{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Exec", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 } // Exec indicates an expected call of Exec. @@ -412,19 +414,19 @@ type MockClientExecCall struct { } // Return rewrite *gomock.Call.Return -func (c *MockClientExecCall) Return(arg0 error) *MockClientExecCall { - c.Call = c.Call.Return(arg0) +func (c *MockClientExecCall) Return(arg0 int64, arg1 error) *MockClientExecCall { + c.Call = c.Call.Return(arg0, arg1) return c } // Do rewrite *gomock.Call.Do -func (c *MockClientExecCall) Do(f func(context.Context, string, ...any) error) *MockClientExecCall { +func (c *MockClientExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockClientExecCall { c.Call = c.Call.Do(f) return c } // DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockClientExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockClientExecCall { +func (c *MockClientExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockClientExecCall { c.Call = c.Call.DoAndReturn(f) return c } @@ -975,15 +977,16 @@ func (c *MockTransactionEndCall) DoAndReturn(f func(context.Context, error) erro } // Exec mocks base method. -func (m *MockTransaction) Exec(arg0 context.Context, arg1 string, arg2 ...any) error { +func (m *MockTransaction) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) { m.ctrl.T.Helper() varargs := []any{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Exec", varargs...) - ret0, _ := ret[0].(error) - return ret0 + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 } // Exec indicates an expected call of Exec. @@ -1000,19 +1003,19 @@ type MockTransactionExecCall struct { } // Return rewrite *gomock.Call.Return -func (c *MockTransactionExecCall) Return(arg0 error) *MockTransactionExecCall { - c.Call = c.Call.Return(arg0) +func (c *MockTransactionExecCall) Return(arg0 int64, arg1 error) *MockTransactionExecCall { + c.Call = c.Call.Return(arg0, arg1) return c } // Do rewrite *gomock.Call.Do -func (c *MockTransactionExecCall) Do(f func(context.Context, string, ...any) error) *MockTransactionExecCall { +func (c *MockTransactionExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockTransactionExecCall { c.Call = c.Call.Do(f) return c } // DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockTransactionExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockTransactionExecCall { +func (c *MockTransactionExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockTransactionExecCall { c.Call = c.Call.DoAndReturn(f) return c } diff --git a/backend/v3/storage/database/repository/instance.go b/backend/v3/storage/database/repository/instance.go index f3dd185cfb..25e2659113 100644 --- a/backend/v3/storage/database/repository/instance.go +++ b/backend/v3/storage/database/repository/instance.go @@ -33,30 +33,30 @@ const queryInstanceStmt = `SELECT id, name, default_org_id, iam_project_id, cons // Get implements [domain.InstanceRepository]. func (i *instance) Get(ctx context.Context, opts ...database.Condition) (*domain.Instance, error) { - i.builder = database.StatementBuilder{} + builder := database.StatementBuilder{} - i.builder.WriteString(queryInstanceStmt) + builder.WriteString(queryInstanceStmt) // return only non deleted isntances opts = append(opts, database.IsNull(i.DeletedAtColumn())) andCondition := database.And(opts...) - andCondition.Write(&i.builder) + andCondition.Write(&builder) - return scanInstance(i.client.QueryRow(ctx, i.builder.String(), i.builder.Args()...)) + return scanInstance(i.client.QueryRow(ctx, builder.String(), builder.Args()...)) } // List implements [domain.InstanceRepository]. func (i *instance) List(ctx context.Context, opts ...database.Condition) ([]*domain.Instance, error) { - i.builder = database.StatementBuilder{} + builder := database.StatementBuilder{} - i.builder.WriteString(queryInstanceStmt) + builder.WriteString(queryInstanceStmt) // return only non deleted isntances opts = append(opts, database.IsNull(i.DeletedAtColumn())) andCondition := database.And(opts...) - andCondition.Write(&i.builder) + andCondition.Write(&builder) - rows, err := i.client.Query(ctx, i.builder.String(), i.builder.Args()...) + rows, err := i.client.Query(ctx, builder.String(), builder.Args()...) if err != nil { return nil, err } @@ -71,11 +71,11 @@ const createInstanceStmt = `INSERT INTO zitadel.instances (id, name, default_org // Create implements [domain.InstanceRepository]. func (i *instance) Create(ctx context.Context, instance *domain.Instance) error { - i.builder = database.StatementBuilder{} - i.builder.AppendArgs(instance.ID, instance.Name, instance.DefaultOrgID, instance.IAMProjectID, instance.ConsoleClientID, instance.ConsoleAppID, instance.DefaultLanguage) - i.builder.WriteString(createInstanceStmt) + builder := database.StatementBuilder{} + builder.AppendArgs(instance.ID, instance.Name, instance.DefaultOrgID, instance.IAMProjectID, instance.ConsoleClientID, instance.ConsoleAppID, instance.DefaultLanguage) + builder.WriteString(createInstanceStmt) - err := i.client.QueryRow(ctx, i.builder.String(), i.builder.Args()...).Scan(&instance.CreatedAt, &instance.UpdatedAt) + err := i.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan(&instance.CreatedAt, &instance.UpdatedAt) if err != nil { var pgErr *pgconn.PgError if errors.As(err, &pgErr) { @@ -101,14 +101,14 @@ func (i *instance) Create(ctx context.Context, instance *domain.Instance) error // Update implements [domain.InstanceRepository]. func (i instance) Update(ctx context.Context, condition database.Condition, changes ...database.Change) (int64, error) { - i.builder = database.StatementBuilder{} - i.builder.WriteString(`UPDATE zitadel.instances SET `) - database.Changes(changes).Write(&i.builder) - i.writeCondition(condition) + builder := database.StatementBuilder{} + builder.WriteString(`UPDATE zitadel.instances SET `) + database.Changes(changes).Write(&builder) + i.writeCondition(&builder, condition) - stmt := i.builder.String() + stmt := builder.String() - rowsAffected, err := i.client.Exec(ctx, stmt, i.builder.Args()...) + rowsAffected, err := i.client.Exec(ctx, stmt, builder.Args()...) return rowsAffected, err } @@ -117,12 +117,12 @@ func (i instance) Delete(ctx context.Context, condition database.Condition) erro if condition == nil { return errors.New("Delete must contain a condition") // (otherwise ALL instances will be deleted) } - i.builder = database.StatementBuilder{} - i.builder.WriteString(`UPDATE zitadel.instances SET deleted_at = $1`) - i.builder.AppendArgs(time.Now()) + builder := database.StatementBuilder{} + builder.WriteString(`UPDATE zitadel.instances SET deleted_at = $1`) + builder.AppendArgs(time.Now()) - i.writeCondition(condition) - _, err := i.client.Exec(ctx, i.builder.String(), i.builder.Args()...) + i.writeCondition(&builder, condition) + _, err := i.client.Exec(ctx, builder.String(), builder.Args()...) return err } @@ -203,12 +203,15 @@ func (instance) DeletedAtColumn() database.Column { return database.NewColumn("deleted_at") } -func (i *instance) writeCondition(condition database.Condition) { +func (i *instance) writeCondition( + builder *database.StatementBuilder, + condition database.Condition, +) { if condition == nil { return } - i.builder.WriteString(" WHERE ") - condition.Write(&i.builder) + builder.WriteString(" WHERE ") + condition.Write(builder) } func scanInstance(scanner database.Scanner) (*domain.Instance, error) { diff --git a/backend/v3/storage/database/repository/repository.go b/backend/v3/storage/database/repository/repository.go index ebd99a66d6..0370657b2f 100644 --- a/backend/v3/storage/database/repository/repository.go +++ b/backend/v3/storage/database/repository/repository.go @@ -3,6 +3,6 @@ package repository import "github.com/zitadel/zitadel/backend/v3/storage/database" type repository struct { - builder database.StatementBuilder - client database.QueryExecutor + // builder database.StatementBuilder + client database.QueryExecutor } diff --git a/backend/v3/storage/database/repository/user.go b/backend/v3/storage/database/repository/user.go index 768279319b..1adc22c3d6 100644 --- a/backend/v3/storage/database/repository/user.go +++ b/backend/v3/storage/database/repository/user.go @@ -47,13 +47,14 @@ func (u *user) List(ctx context.Context, opts ...database.QueryOption) (users [] opt(options) } - u.builder.WriteString(queryUserStmt) - options.WriteCondition(&u.builder) - options.WriteOrderBy(&u.builder) - options.WriteLimit(&u.builder) - options.WriteOffset(&u.builder) + builder := database.StatementBuilder{} + builder.WriteString(queryUserStmt) + options.WriteCondition(&builder) + options.WriteOrderBy(&builder) + options.WriteLimit(&builder) + options.WriteOffset(&builder) - rows, err := u.client.Query(ctx, u.builder.String(), u.builder.Args()...) + rows, err := u.client.Query(ctx, builder.String(), builder.Args()...) if err != nil { return nil, err } @@ -84,13 +85,14 @@ func (u *user) Get(ctx context.Context, opts ...database.QueryOption) (*domain.U opt(options) } - u.builder.WriteString(queryUserStmt) - options.WriteCondition(&u.builder) - options.WriteOrderBy(&u.builder) - options.WriteLimit(&u.builder) - options.WriteOffset(&u.builder) + builder := database.StatementBuilder{} + builder.WriteString(queryUserStmt) + options.WriteCondition(&builder) + options.WriteOrderBy(&builder) + options.WriteLimit(&builder) + options.WriteOffset(&builder) - return scanUser(u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...)) + return scanUser(u.client.QueryRow(ctx, builder.String(), builder.Args()...)) } const ( @@ -104,23 +106,25 @@ const ( // Create implements [domain.UserRepository]. func (u *user) Create(ctx context.Context, user *domain.User) error { - u.builder.AppendArgs(user.InstanceID, user.OrgID, user.ID, user.Username, user.Traits.Type()) + builder := database.StatementBuilder{} + builder.AppendArgs(user.InstanceID, user.OrgID, user.ID, user.Username, user.Traits.Type()) switch trait := user.Traits.(type) { case *domain.Human: - u.builder.WriteString(createHumanStmt) - u.builder.AppendArgs(trait.FirstName, trait.LastName, trait.Email.Address, trait.Email.VerifiedAt, trait.Phone.Number, trait.Phone.VerifiedAt) + builder.WriteString(createHumanStmt) + builder.AppendArgs(trait.FirstName, trait.LastName, trait.Email.Address, trait.Email.VerifiedAt, trait.Phone.Number, trait.Phone.VerifiedAt) case *domain.Machine: - u.builder.WriteString(createMachineStmt) - u.builder.AppendArgs(trait.Description) + builder.WriteString(createMachineStmt) + builder.AppendArgs(trait.Description) } - return u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...).Scan(&user.CreatedAt, &user.UpdatedAt) + return u.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan(&user.CreatedAt, &user.UpdatedAt) } // Delete implements [domain.UserRepository]. func (u *user) Delete(ctx context.Context, condition database.Condition) error { - u.builder.WriteString("DELETE FROM users") - u.writeCondition(condition) - _, err := u.client.Exec(ctx, u.builder.String(), u.builder.Args()...) + builder := database.StatementBuilder{} + builder.WriteString("DELETE FROM users") + u.writeCondition(builder, condition) + _, err := u.client.Exec(ctx, builder.String(), builder.Args()...) return err } @@ -219,12 +223,15 @@ func (user) DeletedAtColumn() database.Column { return database.NewColumn("deleted_at") } -func (u *user) writeCondition(condition database.Condition) { +func (u *user) writeCondition( + builder database.StatementBuilder, + condition database.Condition, +) { if condition == nil { return } - u.builder.WriteString(" WHERE ") - condition.Write(&u.builder) + builder.WriteString(" WHERE ") + condition.Write(&builder) } func (u user) columns() database.Columns { diff --git a/backend/v3/storage/database/repository/user_human.go b/backend/v3/storage/database/repository/user_human.go index e0563c8be4..b24b9a9f14 100644 --- a/backend/v3/storage/database/repository/user_human.go +++ b/backend/v3/storage/database/repository/user_human.go @@ -24,14 +24,14 @@ const userEmailQuery = `SELECT h.email_address, h.email_verified_at FROM user_hu func (u *userHuman) GetEmail(ctx context.Context, condition database.Condition) (*domain.Email, error) { var email domain.Email - u.builder.WriteString(userEmailQuery) - u.writeCondition(condition) + builder := database.StatementBuilder{} + builder.WriteString(userEmailQuery) + u.writeCondition(builder, condition) - err := u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...).Scan( + err := u.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan( &email.Address, &email.VerifiedAt, ) - if err != nil { return nil, err } @@ -40,13 +40,14 @@ func (u *userHuman) GetEmail(ctx context.Context, condition database.Condition) // Update implements [domain.HumanRepository]. func (h userHuman) Update(ctx context.Context, condition database.Condition, changes ...database.Change) error { - h.builder.WriteString(`UPDATE human_users SET `) - database.Changes(changes).Write(&h.builder) - h.writeCondition(condition) + builder := database.StatementBuilder{} + builder.WriteString(`UPDATE human_users SET `) + database.Changes(changes).Write(&builder) + h.writeCondition(builder, condition) - stmt := h.builder.String() + stmt := builder.String() - _, err := h.client.Exec(ctx, stmt, h.builder.Args()...) + _, err := h.client.Exec(ctx, stmt, builder.Args()...) return err } diff --git a/backend/v3/storage/database/repository/user_machine.go b/backend/v3/storage/database/repository/user_machine.go index ef4573838c..766f76a46d 100644 --- a/backend/v3/storage/database/repository/user_machine.go +++ b/backend/v3/storage/database/repository/user_machine.go @@ -19,12 +19,13 @@ var _ domain.MachineRepository = (*userMachine)(nil) // Update implements [domain.MachineRepository]. func (m userMachine) Update(ctx context.Context, condition database.Condition, changes ...database.Change) error { - m.builder.WriteString("UPDATE user_machines SET ") - database.Changes(changes).Write(&m.builder) - m.writeCondition(condition) + builder := database.StatementBuilder{} + builder.WriteString("UPDATE user_machines SET ") + database.Changes(changes).Write(&builder) + m.writeCondition(builder, condition) m.writeReturning() - _, err := m.client.Exec(ctx, m.builder.String(), m.builder.Args()...) + _, err := m.client.Exec(ctx, builder.String(), builder.Args()...) return err } @@ -60,6 +61,7 @@ func (m userMachine) columns() database.Columns { } func (m *userMachine) writeReturning() { - m.builder.WriteString(" RETURNING ") - m.columns().Write(&m.builder) + builder := database.StatementBuilder{} + builder.WriteString(" RETURNING ") + m.columns().Write(&builder) } diff --git a/internal/notification/channels/mock/message.mock.go b/internal/notification/channels/mock/message.mock.go index 1e8ea0067c..d05dc0ff9e 100644 --- a/internal/notification/channels/mock/message.mock.go +++ b/internal/notification/channels/mock/message.mock.go @@ -54,16 +54,16 @@ func (mr *MockMessageMockRecorder) GetContent() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContent", reflect.TypeOf((*MockMessage)(nil).GetContent)) } -// GetTriggeringEvent mocks base method. -func (m *MockMessage) GetTriggeringEvent() eventstore.Event { +// GetTriggeringEventType mocks base method. +func (m *MockMessage) GetTriggeringEventType() eventstore.EventType { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTriggeringEvent") - ret0, _ := ret[0].(eventstore.Event) + ret := m.ctrl.Call(m, "GetTriggeringEventType") + ret0, _ := ret[0].(eventstore.EventType) return ret0 } -// GetTriggeringEvent indicates an expected call of GetTriggeringEvent. -func (mr *MockMessageMockRecorder) GetTriggeringEvent() *gomock.Call { +// GetTriggeringEventType indicates an expected call of GetTriggeringEventType. +func (mr *MockMessageMockRecorder) GetTriggeringEventType() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggeringEvent", reflect.TypeOf((*MockMessage)(nil).GetTriggeringEvent)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggeringEventType", reflect.TypeOf((*MockMessage)(nil).GetTriggeringEventType)) }