From 475ce092c8915846fb09911cb0d3a95397bfaeb7 Mon Sep 17 00:00:00 2001 From: pascal Date: Fri, 9 Jan 2026 00:28:28 +0100 Subject: [PATCH] first dave user, then associations --- management/server/store/sql_store.go | 21 +++++++++++++++++---- management/server/store/sql_store_test.go | 12 ++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/management/server/store/sql_store.go b/management/server/store/sql_store.go index 6b560f395..fe18b938b 100644 --- a/management/server/store/sql_store.go +++ b/management/server/store/sql_store.go @@ -500,11 +500,24 @@ func (s *SqlStore) SaveUser(ctx context.Context, user *types.User) error { return fmt.Errorf("encrypt user: %w", err) } - result := s.db.Save(userCopy) - if result.Error != nil { - log.WithContext(ctx).Errorf("failed to save user to store: %s", result.Error) - return status.Errorf(status.Internal, "failed to save user to store") + err := s.ExecuteInTransaction(ctx, func(tx Store) error { + result := s.db.Omit("Groups").Save(userCopy) + if result.Error != nil { + return status.Errorf(status.Internal, "failed to save user to store: %v", result.Error) + } + + result = s.db.Save(userCopy.Groups) + if result.Error != nil { + return status.Errorf(status.Internal, "failed to save user groups to store: %v", result.Error) + } + + return nil + }) + if err != nil { + log.WithContext(ctx).Errorf("failed to save user to store: %s", err) + return err } + return nil } diff --git a/management/server/store/sql_store_test.go b/management/server/store/sql_store_test.go index 2085f33ef..4365f234e 100644 --- a/management/server/store/sql_store_test.go +++ b/management/server/store/sql_store_test.go @@ -3055,7 +3055,7 @@ func TestSqlStore_SaveUser(t *testing.T) { AccountID: accountID, Role: types.UserRoleAdmin, IsServiceUser: false, - AutoGroups: []string{"groupA", "groupB"}, + AutoGroups: []string{"cfefqs706sqkneg59g2g", "cfefqs706sqkneg59g3g"}, Blocked: false, LastLogin: util.ToPtr(time.Now().UTC()), CreatedAt: time.Now().UTC().Add(-time.Hour), @@ -3093,13 +3093,13 @@ func TestSqlStore_SaveUsers(t *testing.T) { Id: "user-1", AccountID: accountID, Issued: "api", - AutoGroups: []string{"groupA", "groupB"}, + AutoGroups: []string{"cfefqs706sqkneg59g2g", "cfefqs706sqkneg59g3g"}, }, { Id: "user-2", AccountID: accountID, Issued: "integration", - AutoGroups: []string{"groupA"}, + AutoGroups: []string{"cfefqs706sqkneg59g2g"}, }, } err = store.SaveUsers(context.Background(), users) @@ -3109,7 +3109,7 @@ func TestSqlStore_SaveUsers(t *testing.T) { require.NoError(t, err) require.Len(t, accountUsers, 4) - users[1].AutoGroups = []string{"groupA", "groupC"} + users[1].AutoGroups = []string{"cfefqs706sqkneg59g2g", "cfefqs706sqkneg59g4g"} err = store.SaveUsers(context.Background(), users) require.NoError(t, err) @@ -3147,7 +3147,7 @@ func TestSqlStore_SaveUserWithEncryption(t *testing.T) { Role: types.UserRoleUser, Email: "", Name: "", - AutoGroups: []string{"groupA"}, + AutoGroups: []string{"cfefqs706sqkneg59g2g"}, } err = store.SaveUser(context.Background(), user) require.NoError(t, err) @@ -3176,7 +3176,7 @@ func TestSqlStore_SaveUserWithEncryption(t *testing.T) { Role: types.UserRoleAdmin, Email: "test@example.com", Name: "Test User", - AutoGroups: []string{"groupB"}, + AutoGroups: []string{"cfefqs706sqkneg59g3g"}, } err = store.SaveUser(context.Background(), user) require.NoError(t, err)