Files
b2b/app/repos/cartsRepo/cartsRepo.go
Daniel Goc c464c02301 add carts
2026-03-24 14:46:38 +01:00

83 lines
1.8 KiB
Go

package cartsRepo
import (
"git.ma-al.com/goc_daniel/b2b/app/db"
"git.ma-al.com/goc_daniel/b2b/app/model"
constdata "git.ma-al.com/goc_daniel/b2b/app/utils/const_data"
)
type UICartsRepo interface {
CartsAmount(user_id uint) (uint, error)
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
RetrieveCart(user_id uint, cart_id uint) (*model.CustomerCart, error)
}
type CartsRepo struct{}
func New() UICartsRepo {
return &CartsRepo{}
}
func (repo *CartsRepo) CartsAmount(user_id uint) (uint, error) {
var amt uint
err := db.DB.
Table("b2b_customer_carts").
Select("COUNT(*) AS amt").
Where("user_id = ?", user_id).
Scan(&amt).
Error
return amt, err
}
func (repo *CartsRepo) CreateNewCart(user_id uint) (model.CustomerCart, error) {
var name string
name = constdata.DEFAULT_NEW_CART_NAME
cart := model.CustomerCart{
UserID: uint64(user_id),
Name: &name,
}
err := db.DB.Create(&cart).Error
return cart, err
}
func (repo *CartsRepo) UserHasCart(user_id uint, cart_id uint) (uint, error) {
var amt uint
err := db.DB.
Table("b2b_customer_carts").
Select("COUNT(*) AS amt").
Where("user_id = ? AND cart_id = ?", user_id, cart_id).
Scan(&amt).
Error
return amt, err
}
func (repo *CartsRepo) UpdateCartName(user_id uint, cart_id uint, new_name string) error {
err := db.DB.
Table("b2b_customer_carts").
Where("user_id = ? AND cart_id = ?", user_id, cart_id).
Update("name", new_name).
Error
return 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").
Where("user_id = ? AND cart_id = ?", user_id, cart_id).
First(&cart).
Error
return &cart, err
}