From 93cc69d028fa089aca316007767320ce7634e1ce Mon Sep 17 00:00:00 2001 From: marcusDenslow Date: Wed, 25 Mar 2026 08:57:27 +0100 Subject: [PATCH] just updating the branch with current changes --- api/handlers/cards.go | 54 ++++++++++++++++++++++--------------------- api/routes/routes.go | 1 + pkg/api/client.go | 20 ++++++++++++++++ 3 files changed, 49 insertions(+), 26 deletions(-) diff --git a/api/handlers/cards.go b/api/handlers/cards.go index e086154..8938876 100644 --- a/api/handlers/cards.go +++ b/api/handlers/cards.go @@ -40,32 +40,6 @@ func (h *CardHandler) GetCards(w http.ResponseWriter, r *http.Request) { }) } -func (h *CardHandler) setDefaultCard(w http.ResponseWriter, r *http.Request) { - db := database.GetDB() - userID := middleware.UserIDFromContext(r.Context()) - - idStr := chi.URLParam(r, "id") - id, err := strconv.ParseUint(idStr, 10, 32) - if err != nil { - utils.RespondError(w, http.StatusBadRequest, "INVALID_ID", "invalid card id", nil) - return - } - - var card models.Card - if err := db.Where("id = ? AND user_id = ?", id, userID).First(&card).Error; err != nil { - utils.RespondError(w, http.StatusNotFound, "CARD_NOT_FOUND", "card not found", nil) - return - } - - db.Model(&models.Card{}).Where("user_id = ?", userID).Update("id_default", false) - - card.IsDefault = true - db.Save(&card) - - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ - "card": card, - }) -} // func utils.RespondError(w http.ResponseWriter, statusCode int, code string, message string, details map[string]interface{}) @@ -92,6 +66,33 @@ func (h *CardHandler) GetCard(w http.ResponseWriter, r *http.Request) { }) } +func (h *CardHandler) SetDefaultCard(w http.ResponseWriter, r *http.Request) { + db := database.GetDB() + userID := middleware.UserIDFromContext(r.Context()) + + idStr := chi.URLParam(r, "id") + id, err := strconv.ParseUint(idStr, 10, 32) + if err != nil { + utils.RespondError(w, http.StatusBadRequest, "INVALID_ID", "invalid card id", nil) + return + } + + var card models.Card + if err := db.Where("id = ? AND user_id = ?", id, userID).First(&card).Error; err != nil { + utils.RespondError(w, http.StatusNotFound, "CARD_NOT_FOUND", "card not found", nil) + return + } + + db.Model(&models.Card{}).Where("user_id = ?", userID).Update("id_default", false) + + card.IsDefault = true + db.Save(&card) + + utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + "card": card, + }) +} + // SaveCard creates a saved card from a Stripe token. The token is converted to // a PaymentMethod and attached to the user's Stripe customer. func (h *CardHandler) SaveCard(w http.ResponseWriter, r *http.Request) { @@ -233,3 +234,4 @@ func (h *CardHandler) DeleteCard(w http.ResponseWriter, r *http.Request) { "message": "card deleted", }) } + diff --git a/api/routes/routes.go b/api/routes/routes.go index 355dc91..be3d993 100644 --- a/api/routes/routes.go +++ b/api/routes/routes.go @@ -62,6 +62,7 @@ func SetupRoutes(version string, stripeSecretKey string, jwtManager *auth.JWTMan r.Get("/{id}", cardHandler.GetCard) r.Post("/", cardHandler.SaveCard) r.Delete("/{id}", cardHandler.DeleteCard) + r.Put("/{id}/default", cardHandler.SetDefaultCard) }) // Orders diff --git a/pkg/api/client.go b/pkg/api/client.go index 2f3307c..2e85c0a 100644 --- a/pkg/api/client.go +++ b/pkg/api/client.go @@ -728,3 +728,23 @@ func (c *Client) DeleteAddress(id uint) error { return nil } + +func(c *Client) SetDefaultAddress(id uint) error { + url := fmt.Sprintf("%s/api/v1/addresses/%d/default", c.BaseURL, id) + req, err := http.NewRequest("PUT", url, nil) + if err != nil { + return fmt.Errorf("failed to create request: %w", err) + } + req.Header.Set("Authorization", "Bearer "+c.Token) + + resp, err := c.HTTPClient.Do(req) + if err != nil { + return fmt.Errorf("request failed: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("failed to set default address: status %d", resp.StatusCode) + } + return nil +}