diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go index 47c8cd42fe5da7b724635ac643e28185e95933e3..b86164338e8b7edbf5f808d4e5f5fa0f90b535c4 100644 --- a/src/myaktion/model/campaign.go +++ b/src/myaktion/model/campaign.go @@ -12,3 +12,13 @@ type Campaign struct { Donations []Donation `gorm:"foreignKey:CampaignID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` Account Account `gorm:"embedded;embeddedPrefix:account_"` } + +func (c *Campaign) AfterFind(tx *gorm.DB) (err error) { + var sum float64 + result := tx.Model(&Donation{}).Select("ifnull(sum(amount),0)").Where("campaign_id = ?", c.ID).Scan(&sum) + if result.Error != nil { + return result.Error + } + c.AmountDonatedSoFar = sum + return nil +}