From 3788491b91f38ace135b70e2d87a05bd49ab1588 Mon Sep 17 00:00:00 2001 From: Kacper Sawicki Date: Tue, 16 Jul 2024 11:50:23 +0200 Subject: [PATCH] Add GetRewardsTotalSum func --- storage/reward.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/storage/reward.go b/storage/reward.go index 088e9ea..c01e3fa 100644 --- a/storage/reward.go +++ b/storage/reward.go @@ -176,3 +176,26 @@ func (s *Storage) SaveReward(parent context.Context, in *model.Reward) error { } return err } + +func (s *Storage) GetRewardsTotalSum(ctx context.Context) (int64, error) { + groupStage := bson.D{ + {Key: "$group", Value: bson.D{ + {Key: "_id", Value: ""}, + {Key: "totalRewards", Value: bson.D{ + {Key: "$sum", Value: "$total"}, + }, + }, + }}, + } + cursor, err := s.db.Collection("rewards").Aggregate(ctx, mongo.Pipeline{groupStage}) + if err != nil { + return 0, err + } + + if !cursor.Next(ctx) { + log.Info("GetSmesherRewards: Empty result") + return 0, nil + } + doc := cursor.Current + return utils.GetAsInt64(doc.Lookup("totalRewards")), nil +}