wip cart handling
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package repositories
|
||||
|
||||
import(
|
||||
"strconv"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"example.com/gin/test/models"
|
||||
@@ -9,8 +10,10 @@ import(
|
||||
type CartItemRepository interface {
|
||||
Create(models.CartItem) (models.CartItem, error)
|
||||
GetAll() ([]models.CartItem, error)
|
||||
GetById(string) (models.CartItem, error)
|
||||
GetAllBySession(string) ([]models.CartItem, error)
|
||||
Update(models.CartItem) (models.CartItem, error)
|
||||
DeleteById(string) (error)
|
||||
}
|
||||
|
||||
type GORMCartItemRepository struct {
|
||||
@@ -24,7 +27,8 @@ func NewGORMCartItemRepository(db *gorm.DB) CartItemRepository {
|
||||
}
|
||||
|
||||
func (r *GORMCartItemRepository) Create(cartItem models.CartItem) (models.CartItem, error) {
|
||||
result := r.DB.Create(&cartItem)
|
||||
//Omit the shopitem so it is not created again in db leading to unique constain fails
|
||||
result := r.DB.Omit("ShopItem").Create(&cartItem)
|
||||
if result.Error != nil {
|
||||
return models.CartItem{}, result.Error
|
||||
}
|
||||
@@ -39,6 +43,24 @@ func (r *GORMCartItemRepository) GetAll() ([]models.CartItem, error) {
|
||||
return cartItems, result.Error
|
||||
}
|
||||
|
||||
func (t *GORMCartItemRepository) GetById(id string) (models.CartItem, error) {
|
||||
cartItemId, err := strconv.Atoi(id)
|
||||
|
||||
if err != nil {
|
||||
return models.CartItem{}, err
|
||||
}
|
||||
|
||||
var cartItem models.CartItem
|
||||
result := t.DB.First(&cartItem, uint(cartItemId))
|
||||
|
||||
if result.Error != nil {
|
||||
return models.CartItem{}, result.Error
|
||||
}
|
||||
|
||||
return cartItem, nil
|
||||
}
|
||||
|
||||
|
||||
func (r *GORMCartItemRepository) GetAllBySession(sessionId string) ([]models.CartItem, error) {
|
||||
var cartItems []models.CartItem
|
||||
result := r.DB.Preload("ShopItem").Where("session_id = ?", sessionId).Find(&cartItems)
|
||||
@@ -48,11 +70,6 @@ func (r *GORMCartItemRepository) GetAllBySession(sessionId string) ([]models.Car
|
||||
}
|
||||
|
||||
func (r *GORMCartItemRepository) Update(cartItem models.CartItem) (models.CartItem, error) {
|
||||
err := r.DB.Model(&cartItem).Association("Tags").Replace(cartItem.ShopItem)
|
||||
if err != nil {
|
||||
return models.CartItem{}, err
|
||||
}
|
||||
|
||||
result := r.DB.Save(&cartItem)
|
||||
if result.Error != nil {
|
||||
return models.CartItem{}, result.Error
|
||||
@@ -60,3 +77,14 @@ func (r *GORMCartItemRepository) Update(cartItem models.CartItem) (models.CartIt
|
||||
|
||||
return cartItem, nil
|
||||
}
|
||||
|
||||
func (r *GORMCartItemRepository) DeleteById(id string) error {
|
||||
cartItemId, err := strconv.Atoi(id)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result := r.DB.Omit("ShopItem").Delete(&models.CartItem{}, cartItemId)
|
||||
return result.Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user