Add db hooks for Item
This commit is contained in:
parent
81b379afbd
commit
9cd9b20163
38
db/item.go
38
db/item.go
|
@ -1,6 +1,10 @@
|
||||||
package db
|
package db
|
||||||
|
|
||||||
import "gorm.io/gorm"
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
|
@ -73,3 +77,35 @@ func GetItemToRootCat(id uint, preloadPrices bool) (*Item, error) {
|
||||||
}).Preload("CurrentPrice").First(&item, id).Error
|
}).Preload("CurrentPrice").First(&item, id).Error
|
||||||
return &item, err
|
return &item, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
ERROR_ITEM_PRICE_ISZERO = errors.New("Item's Price is zero")
|
||||||
|
ERROR_ITEM_ITEMPRICE_INTERR = errors.New("Item's ItemPrice ID is zero after creating")
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *Item) BeforeCreate(tx *gorm.DB) error {
|
||||||
|
if i.Price == 0 {
|
||||||
|
return ERROR_ITEM_PRICE_ISZERO
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Item) AfterCreate(tx *gorm.DB) error {
|
||||||
|
if i.CurrentPriceID == 0 {
|
||||||
|
itemPrice := &ItemPrice{
|
||||||
|
ItemID: i.ID,
|
||||||
|
Price: i.Price,
|
||||||
|
}
|
||||||
|
if err := tx.Create(itemPrice).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if itemPrice.ID == 0 {
|
||||||
|
return ERROR_ITEM_ITEMPRICE_INTERR
|
||||||
|
}
|
||||||
|
i.CurrentPriceID = itemPrice.ID
|
||||||
|
if err := tx.Save(i).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user