first dave user, then associations

This commit is contained in:
pascal
2026-01-09 00:28:28 +01:00
parent 80c49c268f
commit 475ce092c8
2 changed files with 23 additions and 10 deletions

View File

@@ -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
}

View File

@@ -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)