diff options
| author | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-09-03 23:39:05 +0530 | 
|---|---|---|
| committer | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-09-03 23:39:05 +0530 | 
| commit | cba9f19ba50c60576a5961e89c24caefca52d740 (patch) | |
| tree | 5dd36d4903c640e11a022c5fbf0e55adc3cdd5a5 /customer | |
| parent | 46083ff15e16b0b49132af9466bcab7c2ae71322 (diff) | |
deleting addresses upon customer deletion
Diffstat (limited to 'customer')
| -rw-r--r-- | customer/customer.go | 6 | ||||
| -rw-r--r-- | customer/hooks.go | 14 | ||||
| -rw-r--r-- | customer/service.go | 2 | 
3 files changed, 19 insertions, 3 deletions
diff --git a/customer/customer.go b/customer/customer.go index e411ad5..1a5d6f1 100644 --- a/customer/customer.go +++ b/customer/customer.go @@ -39,11 +39,13 @@ type Address struct {  }  type CustomerBillingAddress struct { +	gorm.Model  	Address  	CustomerID  uint  }  type CustomerShippingAddress struct { +	gorm.Model  	Address  	CustomerID  uint  } @@ -58,6 +60,6 @@ type Customer struct {  	Phone             string  	Email             string  	Website           string -	//BillingAddress    CustomerBillingAddress -	//ShippingAddresses []CustomerShippingAddress +	BillingAddress    CustomerBillingAddress +	ShippingAddresses []CustomerShippingAddress  } diff --git a/customer/hooks.go b/customer/hooks.go index ac246f3..bef3308 100644 --- a/customer/hooks.go +++ b/customer/hooks.go @@ -39,5 +39,19 @@ func (c *Customer) BeforeDelete(tx *gorm.DB) error {  		return errors.ErrNoWhereCondition  	} +	var err error + +	// delete billing address +	err = db.Where("customer_id = ?", c.ID).Delete(&CustomerBillingAddress{}).Error +	if err != nil { +		return err +	} + +	// delete shipping addresses +	err = db.Where("customer_id = ?", c.ID).Delete(&CustomerShippingAddress{}).Error +	if err != nil { +		return err +	} +  	return nil  } diff --git a/customer/service.go b/customer/service.go index f1108c6..a79e466 100644 --- a/customer/service.go +++ b/customer/service.go @@ -22,7 +22,7 @@ import (  )  func getCustomer(customer *Customer, id uint) error { -	res := db.Preload("Contact").Preload("BillingAddress").Preload("ShippingAddresses").Find(&customer, id) +	res := db.Preload("BillingAddress").Preload("ShippingAddresses").Find(&customer, id)  	// TODO: handle potential errors  	if res.Error != nil {  |