diff options
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 { |