add new endpoints

This commit is contained in:
Daniel Goc
2026-03-24 15:44:31 +01:00
parent defdfc7b06
commit d6fa655c21
6 changed files with 162 additions and 14 deletions

View File

@@ -11,7 +11,10 @@ type UICartsRepo interface {
CreateNewCart(user_id uint) (model.CustomerCart, error)
UserHasCart(user_id uint, cart_id uint) (uint, error)
UpdateCartName(user_id uint, cart_id uint, new_name string) error
RetrieveCartsInfo(user_id uint) ([]model.CustomerCart, error)
RetrieveCart(user_id uint, cart_id uint) (*model.CustomerCart, error)
CheckProductExists(product_id uint, product_attribute_id *uint) (uint, error)
AddProduct(user_id uint, cart_id uint, product_id uint, product_attribute_id *uint, amount uint) error
}
type CartsRepo struct{}
@@ -38,7 +41,7 @@ func (repo *CartsRepo) CreateNewCart(user_id uint) (model.CustomerCart, error) {
name = constdata.DEFAULT_NEW_CART_NAME
cart := model.CustomerCart{
UserID: uint64(user_id),
UserID: user_id,
Name: &name,
}
err := db.DB.Create(&cart).Error
@@ -69,14 +72,62 @@ func (repo *CartsRepo) UpdateCartName(user_id uint, cart_id uint, new_name strin
return err
}
func (repo *CartsRepo) RetrieveCartsInfo(user_id uint) ([]model.CustomerCart, error) {
var carts []model.CustomerCart
err := db.DB.
Table("b2b_customer_carts").
Where("user_id = ?", user_id).
Scan(&carts).
Error
return carts, err
}
func (repo *CartsRepo) RetrieveCart(user_id uint, cart_id uint) (*model.CustomerCart, error) {
var cart model.CustomerCart
err := db.DB.
Preload("b2b_carts_products").
Preload("Products").
Where("user_id = ? AND cart_id = ?", user_id, cart_id).
First(&cart).
Error
return &cart, err
}
func (repo *CartsRepo) CheckProductExists(product_id uint, product_attribute_id *uint) (uint, error) {
var amt uint
if product_attribute_id == nil {
err := db.DB.
Table("ps_product_shop").
Select("COUNT(*) AS amt").
Where("id_product = ?", product_id).
Scan(&amt).
Error
return amt, err
} else {
err := db.DB.
Table("ps_product_shop AS ps").
Joins("INNER JOIN ps_product_attribute_shop AS pas ON pas.id_product = ps.id_product").
Select("COUNT(*) AS amt").
Where("ps.id_product = ? AND pas.id_product_attribute = ?", product_id, *product_attribute_id).
Scan(&amt).
Error
return amt, err
}
}
func (repo *CartsRepo) AddProduct(user_id uint, cart_id uint, product_id uint, product_attribute_id *uint, amount uint) error {
product := model.CartProduct{
CartID: cart_id,
ProductID: product_id,
ProductAttributeID: product_attribute_id,
Amount: amount,
}
err := db.DB.Create(&product).Error
return err
}