mirror of
https://github.com/marcusDenslow/terminalShop.git
synced 2026-10-25 10:02:21 +01:00
realized per-shipment table is kinda bad, switched to single embedded tracking blob. since im only shipping from my house no split is needed. adds tracking_status, tracking_status_details, tracking_status_updated_at columns. reverse-backfills any historical shipments rows back onto orders (idempotent, table-guarded). UpdateTracking rewritten to write to otder columns direcly
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"terminalShop/api/middleware"
|
|
"terminalShop/pkg/database"
|
|
"terminalShop/pkg/models"
|
|
"terminalShop/pkg/utils"
|
|
)
|
|
|
|
type ViewHandler struct{}
|
|
|
|
func NewViewHandler() *ViewHandler {
|
|
return &ViewHandler{}
|
|
}
|
|
|
|
func (h *ViewHandler) GetViewInit(w http.ResponseWriter, r *http.Request) {
|
|
db := database.GetDB().WithContext(r.Context())
|
|
userID := middleware.UserIDFromContext(r.Context())
|
|
|
|
var user models.User
|
|
if err := db.First(&user, userID).Error; err != nil {
|
|
utils.RespondError(w, http.StatusUnauthorized, "USER_NOT_FOUND", "user not found", nil)
|
|
return
|
|
}
|
|
|
|
var products []models.Coffee
|
|
db.Find(&products)
|
|
|
|
var cart models.Cart
|
|
db.Where("user_id = ?", userID).First(&cart)
|
|
|
|
var addresses []models.Address
|
|
db.Where("user_id = ?", userID).Find(&addresses)
|
|
|
|
var cards []models.Card
|
|
db.Where("user_id = ?", userID).Find(&cards)
|
|
|
|
var orders []models.Order
|
|
db.Where("user_id = ?", userID).Preload("Items").Order("created_at DESC").Find(&orders)
|
|
var cartItems []models.CartItem
|
|
if cart.ID != 0 {
|
|
db.Where("cart_id = ? AND quantity > 0", cart.ID).Preload("Coffee").Find(&cartItems)
|
|
}
|
|
|
|
utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{
|
|
"user": user.ToPublic(),
|
|
"products": products,
|
|
"cart": cartItems,
|
|
"addresses": addresses,
|
|
"cards": cards,
|
|
"orders": orders,
|
|
})
|
|
}
|