diff options
Diffstat (limited to 'item/hooks.go')
| -rw-r--r-- | item/hooks.go | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/item/hooks.go b/item/hooks.go index cd8d47c..e05a6cb 100644 --- a/item/hooks.go +++ b/item/hooks.go @@ -19,6 +19,7 @@ package item  import (  	"gorm.io/gorm" +	"vidhukant.com/openbills/errors"  )  func (i *SavedItem) BeforeSave(tx *gorm.DB) error { @@ -29,5 +30,28 @@ func (i *SavedItem) BeforeSave(tx *gorm.DB) error {  		return err  	} +	if i.ID != 0 { +		// delete all of this item's variants and save again +		err = db.Where("saved_item_id = ?", i.ID).Delete(&ItemVariant{}).Error +		if err != nil { +			return err +		} +	} + +	return nil +} + +func (i *SavedItem) BeforeDelete(tx *gorm.DB) error { +	// if ID is 0, item won't be deleted +	if i.ID == 0 { +		return errors.ErrNoWhereCondition +	} + +	// delete all of this item's variants before deleting this item +	err := db.Where("saved_item_id = ?", i.ID).Delete(&ItemVariant{}).Error +	if err != nil { +		return err +	} +  	return nil  }  |