mirror of
https://github.com/marcusDenslow/terminalShop.git
synced 2026-10-25 10:02:21 +01:00
fix: fixed card and address list having duplicate items, and a checkout flow infinate loop condition
This commit is contained in:
@@ -141,6 +141,12 @@ func (h *AddressHandler) CreateAddress(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// remove existing addres with the same street addres
|
||||
var existing models.Address
|
||||
if err := db.Where("user_id = ? AND street = ?", userID, address.Street).First(&existing).Error; err == nil {
|
||||
db.Delete(&existing)
|
||||
}
|
||||
|
||||
if err := db.Create(&address).Error; err != nil {
|
||||
utils.RespondError(w, http.StatusInternalServerError, "DATABASE_ERROR", "failed to create address", nil)
|
||||
return
|
||||
|
||||
@@ -248,6 +248,13 @@ func (h *CardHandler) SaveCard(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// remove existing local card with the same last4 + brand + expiry
|
||||
var existingCard models.Card
|
||||
if err := db.Where("user_id = ? AND last4 = ? AND brand = ? AND exp_month = ? AND exp_year = ?",
|
||||
user.ID, pm.Card.Last4, string(pm.Card.Brand), pm.Card.ExpMonth, pm.Card.ExpYear).First(&existingCard).Error; err == nil {
|
||||
db.Delete(&existingCard)
|
||||
}
|
||||
|
||||
// Persist only the safe card metadata — no raw card data is stored.
|
||||
card := models.Card{
|
||||
UserID: user.ID,
|
||||
|
||||
Reference in New Issue
Block a user