From b740ef4cc9f64ed0c3b6d06d932c42a5cd60699c Mon Sep 17 00:00:00 2001 From: Sercan Yesildal <sercan.yesildal@gmail.com> Date: Mon, 8 May 2023 14:08:44 +0200 Subject: [PATCH] after find calculations added for Campaigns --- src/myaktion/model/campaign.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go index f6e65e4..3190642 100644 --- a/src/myaktion/model/campaign.go +++ b/src/myaktion/model/campaign.go @@ -1,5 +1,7 @@ package model +import "gorm.io/gorm" + type Campaign struct { ID uint `json:"id" gorm:"primaryKey"` Name string `json:"name" gorm:"notNull"` @@ -10,3 +12,13 @@ type Campaign struct { Account Account `json:"account" gorm:"embedded; embeddedPrefix:account_"` Donations []Donation `json:"donations" gorm:"foreignKey: CampaignID; constraint:OnUpdate:CASCADE, OnDelete:CASCADE"` } + +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 +} -- GitLab