diff --git a/net/server/internal/api_removeCard.go b/net/server/internal/api_removeCard.go index 01f6094f..29709845 100644 --- a/net/server/internal/api_removeCard.go +++ b/net/server/internal/api_removeCard.go @@ -23,7 +23,7 @@ func RemoveCard(w http.ResponseWriter, r *http.Request) { // load referenced card var slot store.CardSlot - if err := store.DB.Preload("Card.Groups").Preload("Card.Channels.Cards").Preload("Card.Channels.ChannelSlot").Where("account_id = ? AND card_slot_id = ?", account.ID, cardID).First(&slot).Error; err != nil { + if err := store.DB.Preload("Card.Groups").Preload("Card.Channels.Members.Card").Preload("Card.Channels.ChannelSlot").Where("account_id = ? AND card_slot_id = ?", account.ID, cardID).First(&slot).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { ErrResponse(w, http.StatusInternalServerError, err) } else { @@ -42,7 +42,7 @@ func RemoveCard(w http.ResponseWriter, r *http.Request) { // save and update contact revision err = store.DB.Transaction(func(tx *gorm.DB) error { for _, channel := range slot.Card.Channels { - if res := tx.Model(&channel).Association("Cards").Delete(slot.Card); res != nil { + if res := tx.Where("card_id = ?", slot.Card.ID).Delete(&store.Member{}).Error; res != nil { return res } if res := tx.Model(&channel).Update("detail_revision", account.ChannelRevision+1).Error; res != nil {