Files
zineshop/repositories/shopItemRepository.go
2025-03-03 13:49:36 +01:00

90 lines
2.0 KiB
Go

package repositories
import(
"strconv"
"gorm.io/gorm"
"example.com/gin/test/models"
)
type ShopItemRepository interface {
Create(models.ShopItem) (models.ShopItem, error)
GetAll() ([]models.ShopItem, error)
GetAllPublic() ([]models.ShopItem, error)
GetById(string) (models.ShopItem, error)
//GetByTagId(string) ([]models.ShopItem, error)
Update(models.ShopItem) (models.ShopItem, error)
DeleteById(string) error
}
type GORMShopItemRepository struct {
DB *gorm.DB
}
func NewGORMShopItemRepository(db *gorm.DB) ShopItemRepository {
return &GORMShopItemRepository{
DB: db,
}
}
func (r *GORMShopItemRepository) Create(shopItem models.ShopItem) (models.ShopItem, error) {
result := r.DB.Create(&shopItem)
if result.Error != nil {
return models.ShopItem{}, result.Error
}
return shopItem, nil
}
func (r *GORMShopItemRepository) GetAll() ([]models.ShopItem, error) {
var shopItems []models.ShopItem
result := r.DB.Preload("Tags").Find(&shopItems)
return shopItems, result.Error
}
func (r *GORMShopItemRepository) GetAllPublic() ([]models.ShopItem, error) {
var shopItems []models.ShopItem
result := r.DB.Preload("Tags").Where("is_public = 1").Find(&shopItems)
return shopItems, result.Error
}
func (r *GORMShopItemRepository) GetById(id string) (models.ShopItem, error) {
shopItemId, err := strconv.Atoi(id)
if err != nil {
return models.ShopItem{}, err
}
var shopItem models.ShopItem
result := r.DB.Preload("Tags").First(&shopItem, uint(shopItemId))
if result.Error != nil {
return models.ShopItem{}, result.Error
}
return shopItem, nil
}
func (r *GORMShopItemRepository) Update(shopItem models.ShopItem) (models.ShopItem, error) {
result := r.DB.Save(&shopItem)
if result.Error != nil {
return models.ShopItem{}, result.Error
}
return shopItem, nil
}
func (r *GORMShopItemRepository) DeleteById(id string) error {
shopItemId, err := strconv.Atoi(id)
if err != nil {
return err
}
result := r.DB.Delete(&models.ShopItem{}, shopItemId)
return result.Error
}