fix saveAccount and gorm order

This commit is contained in:
pascal
2026-01-08 22:47:32 +01:00
parent 9fd34718a6
commit 77ea4b7444
3 changed files with 22 additions and 0 deletions

View File

@@ -204,13 +204,30 @@ func (s *SqlStore) SaveAccount(ctx context.Context, account *types.Account) erro
return result.Error
}
// Save account without UsersG.Groups to avoid FK constraint violations
// (groups must exist before group_users can reference them)
result = tx.
Session(&gorm.Session{FullSaveAssociations: true}).
Omit("UsersG.Groups").
Clauses(clause.OnConflict{UpdateAll: true}).
Create(account)
if result.Error != nil {
return result.Error
}
// Now save the user-group associations after both users and groups exist
for _, user := range account.UsersG {
if len(user.Groups) > 0 {
result = tx.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "group_id"}, {Name: "user_id"}},
UpdateAll: true,
}).Create(&user.Groups)
if result.Error != nil {
return result.Error
}
}
}
return nil
})
if err != nil {