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 }