From f9c9b7dff546cbdca9407daa2dfb74ae3537e07c Mon Sep 17 00:00:00 2001 From: marcusDenslow Date: Sat, 6 Jun 2026 13:53:50 +0200 Subject: [PATCH] chore(repo): change all instances of interface{} to any as of newer go standards --- api/handlers/addresses.go | 8 ++--- api/handlers/addresses_test.go | 2 +- api/handlers/auth.go | 8 ++--- api/handlers/cards.go | 14 ++++---- api/handlers/cart.go | 24 ++++++------- api/handlers/cart_test.go | 66 +++++++++++++++++----------------- api/handlers/orders.go | 4 +-- api/handlers/products.go | 4 +-- api/handlers/reconcile.go | 4 +-- api/handlers/view.go | 2 +- api/handlers/webhook.go | 4 +-- pkg/api/client.go | 18 +++++----- pkg/auth/jwt.go | 2 +- pkg/utils/response.go | 14 ++++---- 14 files changed, 87 insertions(+), 87 deletions(-) diff --git a/api/handlers/addresses.go b/api/handlers/addresses.go index b62edc9..c3ec6ab 100644 --- a/api/handlers/addresses.go +++ b/api/handlers/addresses.go @@ -42,7 +42,7 @@ func (h *AddressHandler) GetAddresses(w http.ResponseWriter, r *http.Request) { var addresses []models.Address db.Where("user_id = ?", userID).Order("is_default DESC, created_at DESC").Find(&addresses) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "addresses": addresses, }) } @@ -154,7 +154,7 @@ func (h *AddressHandler) CreateAddress(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusCreated, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusCreated, map[string]any{ "address": address, }) } @@ -183,7 +183,7 @@ func (h *AddressHandler) DeleteAddress(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "message": "address successfully deleted", }) } @@ -218,7 +218,7 @@ func (h *AddressHandler) SetDefaultAddress(w http.ResponseWriter, r *http.Reques return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "address": address, }) } diff --git a/api/handlers/addresses_test.go b/api/handlers/addresses_test.go index c022c6d..e4d2841 100644 --- a/api/handlers/addresses_test.go +++ b/api/handlers/addresses_test.go @@ -58,7 +58,7 @@ func TestGetAddressesEmpty(t *testing.T) { var resp struct { Success bool `json:"success"` Data struct { - Addresses []interface{} `json:"addresses"` + Addresses []any `json:"addresses"` } `json:"data"` } if err := json.NewDecoder(w.Body).Decode(&resp); err != nil { diff --git a/api/handlers/auth.go b/api/handlers/auth.go index 47137c9..70127d0 100644 --- a/api/handlers/auth.go +++ b/api/handlers/auth.go @@ -108,7 +108,7 @@ func (h *AuthHandler) GetToken(w http.ResponseWriter, r *http.Request) { } middleware.RecordAuthAttempt("success") - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "access_token": token, "token_type": "Bearer", "expires_in": 1800, // 30 minutes in seconds @@ -146,7 +146,7 @@ func (h *AuthHandler) RegisterWithSSHKey(w http.ResponseWriter, r *http.Request) } if len(errors) > 0 { - utils.RespondError(w, http.StatusBadRequest, "VALIDATION_ERROR", "validation failed", map[string]interface{}{ + utils.RespondError(w, http.StatusBadRequest, "VALIDATION_ERROR", "validation failed", map[string]any{ "errors": errors, }) return @@ -173,7 +173,7 @@ func (h *AuthHandler) RegisterWithSSHKey(w http.ResponseWriter, r *http.Request) return } - utils.RespondSuccess(w, http.StatusCreated, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusCreated, map[string]any{ "user": user.ToPublic(), }) } @@ -195,7 +195,7 @@ func (h *AuthHandler) GetUserBySSHKey(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "user": user.ToPublic(), }) } diff --git a/api/handlers/cards.go b/api/handlers/cards.go index 776d849..c73c3db 100644 --- a/api/handlers/cards.go +++ b/api/handlers/cards.go @@ -89,12 +89,12 @@ func (h *CardHandler) GetCards(w http.ResponseWriter, r *http.Request) { userID, time.Now(), ).Order("is_default DESC, created_at DESC").Find(&cards) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "cards": cards, }) } -// func utils.RespondError(w http.ResponseWriter, statusCode int, code string, message string, details map[string]interface{}) +// func utils.RespondError(w http.ResponseWriter, statusCode int, code string, message string, details map[string]any) // GetCard returns a single saved card by ID. func (h *CardHandler) GetCard(w http.ResponseWriter, r *http.Request) { @@ -114,7 +114,7 @@ func (h *CardHandler) GetCard(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "card": card, }) } @@ -156,7 +156,7 @@ func (h *CardHandler) SetDefaultCard(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "card": card, }) } @@ -197,7 +197,7 @@ func (h *CardHandler) CollectCard(w http.ResponseWriter, r *http.Request) { utils.RespondError(w, http.StatusInternalServerError, "INTERNAL_ERROR", "failed to generate redirect token", nil) return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "url": fmt.Sprintf("%s/pay/%s", h.appURL, token), }) } @@ -302,7 +302,7 @@ func (h *CardHandler) SaveCard(w http.ResponseWriter, r *http.Request) { audit.CardAdded(userID, card.ID, card.Brand, card.Last4) - utils.RespondSuccess(w, http.StatusCreated, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusCreated, map[string]any{ "card": card, }) } @@ -347,7 +347,7 @@ func (h *CardHandler) DeleteCard(w http.ResponseWriter, r *http.Request) { audit.CardDeleted(userID, card.ID) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "message": "card deleted", }) } diff --git a/api/handlers/cart.go b/api/handlers/cart.go index d76ca0f..122d8ed 100644 --- a/api/handlers/cart.go +++ b/api/handlers/cart.go @@ -55,18 +55,18 @@ func getOrCreateCart(ctx context.Context, userID uint) (*models.Cart, error) { return &cart, nil } -func cartResponse(ctx context.Context, cart *models.Cart) map[string]interface{} { +func cartResponse(ctx context.Context, cart *models.Cart) map[string]any { db := database.GetDB().WithContext(ctx) var items []models.CartItem db.Where("cart_id = ? AND quantity > 0", cart.ID).Preload("Coffee").Find(&items) subtotal := 0 - itemsData := make([]map[string]interface{}, 0, len(items)) + itemsData := make([]map[string]any, 0, len(items)) for _, item := range items { lineTotal := item.Coffee.Price * item.Quantity subtotal += lineTotal - itemsData = append(itemsData, map[string]interface{}{ + itemsData = append(itemsData, map[string]any{ "id": item.ID, "coffee_id": item.CoffeeID, "quantity": item.Quantity, @@ -75,7 +75,7 @@ func cartResponse(ctx context.Context, cart *models.Cart) map[string]interface{} }) } - return map[string]interface{}{ + return map[string]any{ "items": itemsData, "subtotal": subtotal, "address_id": cart.AddressID, @@ -94,7 +94,7 @@ func (h *CartHandler) GetCart(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "cart": cartResponse(r.Context(), cart), }) } @@ -157,7 +157,7 @@ func (h *CartHandler) SetItem(w http.ResponseWriter, r *http.Request) { } } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "cart": cartResponse(r.Context(), cart), }) } @@ -193,7 +193,7 @@ func (h *CartHandler) SetAddress(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "message": "address set", }) } @@ -238,7 +238,7 @@ func (h *CartHandler) SetCard(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "message": "card set", }) } @@ -258,7 +258,7 @@ func (h *CartHandler) ClearCart(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "message": "cart cleared", }) } @@ -386,7 +386,7 @@ func (h *CartHandler) ConvertCart(w http.ResponseWriter, r *http.Request) { middleware.RecordCartConversion("validation_over_limit") utils.RespondError(w, http.StatusBadRequest, "CART_OVER_LIMIT", fmt.Sprintf("order total must be at most $%.2f", float64(h.maxOrderCents)/100), - map[string]interface{}{ + map[string]any{ "total_cents": total, "limit_cents": h.maxOrderCents, }) @@ -507,7 +507,7 @@ func (h *CartHandler) ConvertCart(w http.ResponseWriter, r *http.Request) { if err := tx.Where("cart_id = ?", cart.ID).Delete(&models.CartItem{}).Error; err != nil { return err } - return tx.Model(cart).Updates(map[string]interface{}{ + return tx.Model(cart).Updates(map[string]any{ "address_id": nil, "card_id": nil, }).Error @@ -534,7 +534,7 @@ func (h *CartHandler) ConvertCart(w http.ResponseWriter, r *http.Request) { } go notify.SlackOrderPaid(&order) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "order": order, }) } diff --git a/api/handlers/cart_test.go b/api/handlers/cart_test.go index c80a5e7..ec6b61e 100644 --- a/api/handlers/cart_test.go +++ b/api/handlers/cart_test.go @@ -83,8 +83,8 @@ func TestGetCartEmpty(t *testing.T) { Success bool `json:"success"` Data struct { Cart struct { - Items []interface{} `json:"items"` - Subtotal int `json:"subtotal"` + Items []any `json:"items"` + Subtotal int `json:"subtotal"` } `json:"cart"` } `json:"data"` } @@ -110,7 +110,7 @@ func TestSetItemAndGetCart(t *testing.T) { handler := NewCartHandler("", "", 0) // Add item (CoffeeID=1, Quantity=2) - body, _ := json.Marshal(map[string]interface{}{ + body, _ := json.Marshal(map[string]any{ "coffee_id": 1, "quantity": 2, }) @@ -166,13 +166,13 @@ func TestSetItemUpdateQuantity(t *testing.T) { handler := NewCartHandler("", "", 0) // Add item - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 2}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 2}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) // Update quantity - body, _ = json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 5}) + body, _ = json.Marshal(map[string]any{"coffee_id": 1, "quantity": 5}) req = authRequest("PUT", "/api/v1/cart/item", body, user.ID) w = httptest.NewRecorder() handler.SetItem(w, req) @@ -211,13 +211,13 @@ func TestSetItemRemove(t *testing.T) { handler := NewCartHandler("", "", 0) // Add item - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 3}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 3}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) // Remove item (quantity 0) - body, _ = json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 0}) + body, _ = json.Marshal(map[string]any{"coffee_id": 1, "quantity": 0}) req = authRequest("PUT", "/api/v1/cart/item", body, user.ID) w = httptest.NewRecorder() handler.SetItem(w, req) @@ -231,7 +231,7 @@ func TestSetItemRemove(t *testing.T) { Success bool `json:"success"` Data struct { Cart struct { - Items []interface{} `json:"items"` + Items []any `json:"items"` } `json:"cart"` } `json:"data"` } @@ -249,7 +249,7 @@ func TestSetItemInvalidProduct(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 999, "quantity": 1}) + body, _ := json.Marshal(map[string]any{"coffee_id": 999, "quantity": 1}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -266,7 +266,7 @@ func TestSetItemMissingCoffeeID(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"quantity": 1}) + body, _ := json.Marshal(map[string]any{"quantity": 1}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -285,7 +285,7 @@ func TestClearCart(t *testing.T) { // Add two items for _, coffeeID := range []uint{1, 2} { - body, _ := json.Marshal(map[string]interface{}{"coffee_id": coffeeID, "quantity": 1}) + body, _ := json.Marshal(map[string]any{"coffee_id": coffeeID, "quantity": 1}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -309,7 +309,7 @@ func TestClearCart(t *testing.T) { Success bool `json:"success"` Data struct { Cart struct { - Items []interface{} `json:"items"` + Items []any `json:"items"` } `json:"cart"` } `json:"data"` } @@ -339,7 +339,7 @@ func TestSetAddress(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"address_id": addr.ID}) + body, _ := json.Marshal(map[string]any{"address_id": addr.ID}) req := authRequest("PUT", "/api/v1/cart/address", body, user.ID) w := httptest.NewRecorder() handler.SetAddress(w, req) @@ -393,7 +393,7 @@ func TestSetAddressWrongUser(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"address_id": addr.ID}) + body, _ := json.Marshal(map[string]any{"address_id": addr.ID}) req := authRequest("PUT", "/api/v1/cart/address", body, user.ID) w := httptest.NewRecorder() handler.SetAddress(w, req) @@ -421,7 +421,7 @@ func TestSetCard(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"card_id": card.ID}) + body, _ := json.Marshal(map[string]any{"card_id": card.ID}) req := authRequest("PUT", "/api/v1/cart/card", body, user.ID) w := httptest.NewRecorder() handler.SetCard(w, req) @@ -473,7 +473,7 @@ func TestSetCardWrongUser(t *testing.T) { handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"card_id": card.ID}) + body, _ := json.Marshal(map[string]any{"card_id": card.ID}) req := authRequest("PUT", "/api/v1/cart/card", body, user.ID) w := httptest.NewRecorder() handler.SetCard(w, req) @@ -491,7 +491,7 @@ func TestConvertCartMissingAddress(t *testing.T) { handler := NewCartHandler("", "", 0) // Add item but no address or card - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 1}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 1}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -515,14 +515,14 @@ func TestConvertCartMissingCard(t *testing.T) { db := database.GetDB() // Add item and address - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 1}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 1}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) addr := models.Address{UserID: user.ID, Name: "Test", Street: "123 St", City: "PDX", State: "OR", Zip: "97201", Country: "US"} db.Create(&addr) - body, _ = json.Marshal(map[string]interface{}{"address_id": addr.ID}) + body, _ = json.Marshal(map[string]any{"address_id": addr.ID}) req = authRequest("PUT", "/api/v1/cart/address", body, user.ID) w = httptest.NewRecorder() handler.SetAddress(w, req) @@ -563,7 +563,7 @@ func TestMultipleItems(t *testing.T) { // Add three different items for i := uint(1); i <= 3; i++ { - body, _ := json.Marshal(map[string]interface{}{"coffee_id": i, "quantity": int(i)}) + body, _ := json.Marshal(map[string]any{"coffee_id": i, "quantity": int(i)}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -581,8 +581,8 @@ func TestMultipleItems(t *testing.T) { Success bool `json:"success"` Data struct { Cart struct { - Items []interface{} `json:"items"` - Subtotal int `json:"subtotal"` + Items []any `json:"items"` + Subtotal int `json:"subtotal"` } `json:"cart"` } `json:"data"` } @@ -614,13 +614,13 @@ func TestCartIsolation(t *testing.T) { r.Get("/cart", handler.GetCart) // User 1 adds item - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 5}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 5}) req := authRequest("PUT", "/cart/item", body, user1.ID) w := httptest.NewRecorder() r.ServeHTTP(w, req) // User 2 adds different item - body, _ = json.Marshal(map[string]interface{}{"coffee_id": 2, "quantity": 3}) + body, _ = json.Marshal(map[string]any{"coffee_id": 2, "quantity": 3}) req = authRequest("PUT", "/cart/item", body, user2.ID) w = httptest.NewRecorder() r.ServeHTTP(w, req) @@ -719,7 +719,7 @@ func TestConvertCartLimit(t *testing.T) { handler := NewCartHandler("", "", tc.capCents) - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 4, "quantity": tc.quantity}) + body, _ := json.Marshal(map[string]any{"coffee_id": 4, "quantity": tc.quantity}) req := authRequest("PUT", "/api/v1/cart/item", body, user.ID) w := httptest.NewRecorder() handler.SetItem(w, req) @@ -728,7 +728,7 @@ func TestConvertCartLimit(t *testing.T) { } // set address - body, _ = json.Marshal(map[string]interface{}{"address_id": addr.ID}) + body, _ = json.Marshal(map[string]any{"address_id": addr.ID}) req = authRequest("PUT", "/api/v1/cart/address", body, user.ID) w = httptest.NewRecorder() handler.SetAddress(w, req) @@ -737,7 +737,7 @@ func TestConvertCartLimit(t *testing.T) { } // set card - body, _ = json.Marshal(map[string]interface{}{"card_id": card.ID}) + body, _ = json.Marshal(map[string]any{"card_id": card.ID}) req = authRequest("PUT", "/api/v1/cart/card", body, user.ID) w = httptest.NewRecorder() handler.SetCard(w, req) @@ -753,9 +753,9 @@ func TestConvertCartLimit(t *testing.T) { var resp struct { Success bool `json:"success"` Error struct { - Code string `json:"code"` - Message string `json:"message"` - Details map[string]interface{} `json:"details"` + Code string `json:"code"` + Message string `json:"message"` + Details map[string]any `json:"details"` } `json:"error"` } _ = json.NewDecoder(w.Body).Decode(&resp) @@ -795,7 +795,7 @@ func TestSetCard_ExpiredReturns410(t *testing.T) { } handler := NewCartHandler("", "", 0) - body, _ := json.Marshal(map[string]interface{}{"card_id": card.ID}) + body, _ := json.Marshal(map[string]any{"card_id": card.ID}) req := authRequest("PUT", "/api/v1/cart/card", body, user.ID) w := httptest.NewRecorder() handler.SetCard(w, req) @@ -832,7 +832,7 @@ func TestConvertCart_ExpiredReturns410(t *testing.T) { db := database.GetDB() - body, _ := json.Marshal(map[string]interface{}{"coffee_id": 1, "quantity": 1}) + body, _ := json.Marshal(map[string]any{"coffee_id": 1, "quantity": 1}) req := authRequest("PUT", "/api/v1/vart/item", body, user.ID) w := httptest.NewRecorder() NewCartHandler("", "", 0).SetItem(w, req) @@ -842,7 +842,7 @@ func TestConvertCart_ExpiredReturns410(t *testing.T) { City: "PDX", State: "OR", Zip: "97201", Country: "US", } db.Create(&addr) - body, _ = json.Marshal(map[string]interface{}{"address_id": addr.ID}) + body, _ = json.Marshal(map[string]any{"address_id": addr.ID}) req = authRequest("PUT", "/api/v1/cart/address", body, user.ID) w = httptest.NewRecorder() NewCartHandler("", "", 0).SetAddress(w, req) diff --git a/api/handlers/orders.go b/api/handlers/orders.go index 8739a80..1a3027b 100644 --- a/api/handlers/orders.go +++ b/api/handlers/orders.go @@ -221,7 +221,7 @@ func (h *OrderHandler) RefundOrder(w http.ResponseWriter, r *http.Request) { audit.OrderRefunded(userID, order.ID, order.Total, rf.ID) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "refund_id": rf.ID, "status": "refunded", }) @@ -287,7 +287,7 @@ func (h *OrderHandler) UpdateTracking(w http.ResponseWriter, r *http.Request) { audit.OrderShipped(order.UserID, order.ID, req.Carrier, req.TrackingNumber) - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "order_id": order.ID, "carrier": req.Carrier, "tracking_number": req.TrackingNumber, diff --git a/api/handlers/products.go b/api/handlers/products.go index 13e642e..b808b48 100644 --- a/api/handlers/products.go +++ b/api/handlers/products.go @@ -30,7 +30,7 @@ func (h *ProductHandler) GetProducts(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "products": products, }) } @@ -53,7 +53,7 @@ func (h *ProductHandler) GetProduct(w http.ResponseWriter, r *http.Request) { return } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "product": product, }) } diff --git a/api/handlers/reconcile.go b/api/handlers/reconcile.go index 74dd386..d905b25 100644 --- a/api/handlers/reconcile.go +++ b/api/handlers/reconcile.go @@ -49,7 +49,7 @@ func ReconcileOrders(stripeKey string) { "order_id", order.ID, "pi", pi.ID) txErr := db.Transaction(func(tx *gorm.DB) error { - if err := tx.Model(&order).Updates(map[string]interface{}{ + if err := tx.Model(&order).Updates(map[string]any{ "status": models.OrderStatusPaid, "stripe_payment_id": pi.ID, }).Error; err != nil { @@ -62,7 +62,7 @@ func ReconcileOrders(stripeKey string) { if err := tx.Where("cart_id = ?", cart.ID).Delete(&models.CartItem{}).Error; err != nil { return err } - return tx.Model(&cart).Updates(map[string]interface{}{ + return tx.Model(&cart).Updates(map[string]any{ "address_id": nil, "card_id": nil, }).Error diff --git a/api/handlers/view.go b/api/handlers/view.go index 5e13dcc..999e526 100644 --- a/api/handlers/view.go +++ b/api/handlers/view.go @@ -54,7 +54,7 @@ func (h *ViewHandler) GetViewInit(w http.ResponseWriter, r *http.Request) { db.Where("cart_id = ? AND quantity > 0", cart.ID).Preload("Coffee").Find(&cartItems) } - utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ + utils.RespondSuccess(w, http.StatusOK, map[string]any{ "user": user.ToPublic(), "products": products, "cart": cartItems, diff --git a/api/handlers/webhook.go b/api/handlers/webhook.go index 5e8c209..2644f84 100644 --- a/api/handlers/webhook.go +++ b/api/handlers/webhook.go @@ -125,7 +125,7 @@ func (h *WebhookHandler) handlePaymentIntentSucceeded(ctx context.Context, event } txErr := db.Transaction(func(tx *gorm.DB) error { - if err := tx.Model(&order).Updates(map[string]interface{}{ + if err := tx.Model(&order).Updates(map[string]any{ "status": models.OrderStatusPaid, "stripe_payment_id": pi.ID, }).Error; err != nil { @@ -139,7 +139,7 @@ func (h *WebhookHandler) handlePaymentIntentSucceeded(ctx context.Context, event if err := tx.Where("cart_id = ?", cart.ID).Delete(&models.CartItem{}).Error; err != nil { return fmt.Errorf("failed to delete cart item: %w", err) } - return tx.Model(&cart).Updates(map[string]interface{}{ + return tx.Model(&cart).Updates(map[string]any{ "address_id": nil, "card_id": nil, }).Error diff --git a/pkg/api/client.go b/pkg/api/client.go index 7003cce..1c49728 100644 --- a/pkg/api/client.go +++ b/pkg/api/client.go @@ -104,16 +104,16 @@ func (c *Client) RefreshToken(fingerprint, clientSecret string) (string, error) // APIResponse represents the standard API response format type APIResponse struct { - Success bool `json:"success"` - Data map[string]interface{} `json:"data"` - Error *APIError `json:"error,omitempty"` + Success bool `json:"success"` + Data map[string]any `json:"data"` + Error *APIError `json:"error,omitempty"` } // APIError represents an error from the API type APIError struct { - Code string `json:"code"` - Message string `json:"message"` - Details map[string]interface{} `json:"details,omitempty"` + Code string `json:"code"` + Message string `json:"message"` + Details map[string]any `json:"details,omitempty"` } // ProductsResponse represents the products API response @@ -339,7 +339,7 @@ func (c *Client) GetCart() (*CartData, error) { func (c *Client) SetCartItem(coffeeID uint, quantity int) (*CartData, error) { url := fmt.Sprintf("%s/api/v1/cart/item", c.BaseURL) - body := map[string]interface{}{ + body := map[string]any{ "coffee_id": coffeeID, "quantity": quantity, } @@ -379,7 +379,7 @@ func (c *Client) SetCartItem(coffeeID uint, quantity int) (*CartData, error) { func (c *Client) SetCartAddress(addressID uint) error { url := fmt.Sprintf("%s/api/v1/cart/address", c.BaseURL) - body := map[string]interface{}{ + body := map[string]any{ "address_id": addressID, } jsonData, err := json.Marshal(body) @@ -418,7 +418,7 @@ func (c *Client) SetCartAddress(addressID uint) error { func (c *Client) SetCartCard(cardID uint) error { url := fmt.Sprintf("%s/api/v1/cart/card", c.BaseURL) - body := map[string]interface{}{ + body := map[string]any{ "card_id": cardID, } jsonData, err := json.Marshal(body) diff --git a/pkg/auth/jwt.go b/pkg/auth/jwt.go index e70a411..7b21b60 100644 --- a/pkg/auth/jwt.go +++ b/pkg/auth/jwt.go @@ -53,7 +53,7 @@ func (m *JWTManager) GenerateToken(userID uint, email, username string) (string, // ValidateToken validates a JWT token and returns the claims func (m *JWTManager) ValidateToken(tokenString string) (*Claims, error) { - token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) { + token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (any, error) { // Verify signing method if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) diff --git a/pkg/utils/response.go b/pkg/utils/response.go index 04615e4..02c48c9 100644 --- a/pkg/utils/response.go +++ b/pkg/utils/response.go @@ -8,8 +8,8 @@ import ( // SuccessResponse represents a successful API response type SuccessResponse struct { - Success bool `json:"success"` - Data interface{} `json:"data"` + Success bool `json:"success"` + Data any `json:"data"` } // ErrorResponse represents an error API response @@ -20,13 +20,13 @@ type ErrorResponse struct { // Error contains error details type Error struct { - Code string `json:"code"` - Message string `json:"message"` - Details map[string]interface{} `json:"details,omitempty"` + Code string `json:"code"` + Message string `json:"message"` + Details map[string]any `json:"details,omitempty"` } // RespondSuccess sends a successful JSON response -func RespondSuccess(w http.ResponseWriter, statusCode int, data interface{}) { +func RespondSuccess(w http.ResponseWriter, statusCode int, data any) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(statusCode) @@ -39,7 +39,7 @@ func RespondSuccess(w http.ResponseWriter, statusCode int, data interface{}) { } // RespondError sends an error JSON response -func RespondError(w http.ResponseWriter, statusCode int, code, message string, details map[string]interface{}) { +func RespondError(w http.ResponseWriter, statusCode int, code, message string, details map[string]any) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(statusCode)