add basic cart

This commit is contained in:
2025-03-03 21:09:47 +01:00
parent 1dc10d61bc
commit 5e22be5074
9 changed files with 373 additions and 4 deletions

View File

@@ -0,0 +1,57 @@
package repositories
import(
"gorm.io/gorm"
"example.com/gin/test/models"
)
type CartItemRepository interface {
Create(models.CartItem) (models.CartItem, error)
GetAll() ([]models.CartItem, error)
GetAllBySession(string) ([]models.CartItem, error)
Update(models.CartItem) (models.CartItem, error)
}
type GORMCartItemRepository struct {
DB *gorm.DB
}
func NewGORMCartItemRepository(db *gorm.DB) CartItemRepository {
return &GORMCartItemRepository{
DB: db,
}
}
func (r *GORMCartItemRepository) Create(cartItem models.CartItem) (models.CartItem, error) {
result := r.DB.Create(&cartItem)
if result.Error != nil {
return models.CartItem{}, result.Error
}
return cartItem, nil
}
func (r *GORMCartItemRepository) GetAll() ([]models.CartItem, error) {
var cartItems []models.CartItem
result := r.DB.Find(&cartItems)
return cartItems, result.Error
}
func (r *GORMCartItemRepository) GetAllBySession(sessionId string) ([]models.CartItem, error) {
var cartItems []models.CartItem
result := r.DB.Where("session_id = ?", sessionId).Find(&cartItems)
return cartItems, result.Error
}
func (r *GORMCartItemRepository) Update(cartItem models.CartItem) (models.CartItem, error) {
result := r.DB.Save(&cartItem)
if result.Error != nil {
return models.CartItem{}, result.Error
}
return cartItem, nil
}

View File

@@ -12,6 +12,7 @@ var(
ShopItems ShopItemRepository
Users UserRepository
Tags TagRepository
CartItems CartItemRepository
)
func InitRepositories() {
@@ -20,7 +21,7 @@ func InitRepositories() {
panic("failed to connect to database")
}
err = db.AutoMigrate(&models.ShopItem{}, &models.User{}, &models.Tag{})
err = db.AutoMigrate(&models.ShopItem{}, &models.User{}, &models.Tag{}, &models.CartItem{})
if err != nil {
panic("failed to migrate database")
}
@@ -28,4 +29,5 @@ func InitRepositories() {
ShopItems = NewGORMShopItemRepository(db)
Users = NewGORMUserRepository(db)
Tags = NewGORMTagRepository(db)
CartItems = NewGORMCartItemRepository(db)
}