From 416782d2832d20ff6d97169aae0fbb06e98fd607 Mon Sep 17 00:00:00 2001 From: Marco Ardizzone Date: Fri, 19 Sep 2025 12:42:58 +0200 Subject: [PATCH] fix for setting DB pool --- backend/v3/api/org/v2/org.go | 2 +- backend/v3/domain/command.go | 4 ++-- backend/v3/domain/invoke.go | 8 +++---- backend/v3/domain/org_update.go | 2 +- backend/v3/domain/org_update_test.go | 34 ++++++++++++++-------------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/backend/v3/api/org/v2/org.go b/backend/v3/api/org/v2/org.go index 7f83792bc7a..56864591bd7 100644 --- a/backend/v3/api/org/v2/org.go +++ b/backend/v3/api/org/v2/org.go @@ -53,7 +53,7 @@ func UpdateOrganization(ctx context.Context, request *connect.Request[v2beta_org batchCmd := domain.BatchCommands(orgUpdtCmd, domainAddCmd, domainSetPrimaryCmd, domainRemoveCmd) - err := domain.Invoke(ctx, batchCmd, domain.WithOrganizationRepo(repository.OrganizationRepository(nil))) + err := domain.Invoke(ctx, batchCmd, domain.WithOrganizationRepo(repository.OrganizationRepository)) if err != nil { return nil, err } diff --git a/backend/v3/domain/command.go b/backend/v3/domain/command.go index 527f24e43d4..6c3d237e84b 100644 --- a/backend/v3/domain/command.go +++ b/backend/v3/domain/command.go @@ -31,10 +31,10 @@ type Invoker interface { type CommandOpts struct { DB database.QueryExecutor Invoker Invoker - organizationRepo OrganizationRepository + organizationRepo func(client database.QueryExecutor) OrganizationRepository } -func (opts *CommandOpts) SetOrgRepo(repo OrganizationRepository) { +func (opts *CommandOpts) SetOrgRepo(repo func(client database.QueryExecutor) OrganizationRepository) { opts.organizationRepo = repo } diff --git a/backend/v3/domain/invoke.go b/backend/v3/domain/invoke.go index 8a3c4c396d6..b81bdac532b 100644 --- a/backend/v3/domain/invoke.go +++ b/backend/v3/domain/invoke.go @@ -4,13 +4,14 @@ import ( "context" "fmt" + "github.com/zitadel/zitadel/backend/v3/storage/database" "github.com/zitadel/zitadel/backend/v3/storage/eventstore" legacy_es "github.com/zitadel/zitadel/internal/eventstore" ) type InvokeOpt func(*CommandOpts) -func WithOrganizationRepo(repo OrganizationRepository) InvokeOpt { +func WithOrganizationRepo(repo func(client database.QueryExecutor) OrganizationRepository) InvokeOpt { return func(opts *CommandOpts) { opts.organizationRepo = repo } @@ -29,9 +30,8 @@ func Invoke(ctx context.Context, cmd Commander, opts ...InvokeOpt) error { ), ) commandOpts := &CommandOpts{ - Invoker: invoker.collector, - DB: pool, - organizationRepo: nil, + Invoker: invoker.collector, + DB: pool, } for _, opt := range opts { opt(commandOpts) diff --git a/backend/v3/domain/org_update.go b/backend/v3/domain/org_update.go index d7c1c5bbbc6..0c1cbd3ef49 100644 --- a/backend/v3/domain/org_update.go +++ b/backend/v3/domain/org_update.go @@ -46,7 +46,7 @@ func (u *UpdateOrgCommand) Execute(ctx context.Context, opts *CommandOpts) (err } defer func() { err = close(ctx, err) }() - organizationRepo := opts.organizationRepo + organizationRepo := opts.organizationRepo(pool) organizationRepo.Domains(true) org, err := organizationRepo.Get(ctx, database.WithCondition(organizationRepo.IDCondition(u.ID))) diff --git a/backend/v3/domain/org_update_test.go b/backend/v3/domain/org_update_test.go index 17151db9be9..c5d1df3e716 100644 --- a/backend/v3/domain/org_update_test.go +++ b/backend/v3/domain/org_update_test.go @@ -29,7 +29,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { testName string queryExecutor func(ctrl *gomock.Controller) database.QueryExecutor - orgRepo func(ctrl *gomock.Controller) domain.OrganizationRepository + orgRepo func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository inputID string inputName string @@ -52,13 +52,13 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when retrieving org fails should return error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). Times(1). Return(nil, getErr) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -66,7 +66,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when org name is not changed should return name not changed error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -75,7 +75,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { ID: "org-1", Name: "test org update", }, nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -83,7 +83,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when org is inactive should return not found error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -93,7 +93,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { Name: "old org name", State: domain.OrgStateInactive, }, nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -101,7 +101,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when setting domain info fails should return error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -116,7 +116,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { {IsPrimary: false, IsVerified: true, Domain: "old primary org name"}, }, }, nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -124,7 +124,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when org update fails should return error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -144,7 +144,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { Update(gomock.Any(), repo.IDCondition("org-1"), "instance-1", repo.SetName("test org update")). Times(1). Return(int64(0), updateErr) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -154,7 +154,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { testName: "when org update returns 0 rows updated should return not found error", inputID: "org-1", inputName: "test org update", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -175,7 +175,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { Update(gomock.Any(), repo.IDCondition("org-1"), "instance-1", repo.SetName("test org update")). Times(1). Return(int64(0), nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, expectedError: domain.NewOrgNotFoundError("DOM-7PfSUn"), expectedOldDomainName: gu.Ptr("old-org-name."), @@ -183,7 +183,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when org update returns more than 1 row updated should return internal error", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -204,7 +204,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { Update(gomock.Any(), repo.IDCondition("org-1"), "instance-1", repo.SetName("test org update")). Times(1). Return(int64(2), nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update", @@ -214,7 +214,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { }, { testName: "when org update returns 1 row updated should return no error and set non-primary verified domain", - orgRepo: func(ctrl *gomock.Controller) domain.OrganizationRepository { + orgRepo: func(ctrl *gomock.Controller) func(client database.QueryExecutor) domain.OrganizationRepository { repo := domainmock.NewOrgRepo(ctrl) repo.EXPECT(). Get(gomock.Any(), gomock.Any()). @@ -235,7 +235,7 @@ func TestUpdateOrgCommand_Execute(t *testing.T) { Update(gomock.Any(), repo.IDCondition("org-1"), "instance-1", repo.SetName("test org update")). Times(1). Return(int64(1), nil) - return repo + return func(_ database.QueryExecutor) domain.OrganizationRepository { return repo } }, inputID: "org-1", inputName: "test org update",