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