code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/referral_set_resolver.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package gql 17 18 import ( 19 "context" 20 "errors" 21 "math" 22 23 v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" 24 ) 25 26 type referralSetResolver VegaResolverRoot 27 28 func (t referralSetResolver) TotalMembers(_ context.Context, obj *v2.ReferralSet) (int, error) { 29 return int(obj.TotalMembers), nil 30 } 31 32 type referralSetRefereeResolver VegaResolverRoot 33 34 func (r *referralSetRefereeResolver) AtEpoch(ctx context.Context, obj *v2.ReferralSetReferee) (int, error) { 35 if obj == nil { 36 return 0, nil 37 } 38 39 return int(obj.AtEpoch), nil 40 } 41 42 func (r *referralSetRefereeResolver) RefereeID(ctx context.Context, obj *v2.ReferralSetReferee) (string, error) { 43 return obj.Referee, nil 44 } 45 46 type referralSetStatsResolver VegaResolverRoot 47 48 // DiscountFactors implements ReferralSetStatsResolver. 49 func (r *referralSetStatsResolver) DiscountFactors(ctx context.Context, obj *v2.ReferralSetStats) (*DiscountFactors, error) { 50 return &DiscountFactors{ 51 InfrastructureFactor: obj.DiscountFactors.InfrastructureDiscountFactor, 52 MakerFactor: obj.DiscountFactors.MakerDiscountFactor, 53 LiquidityFactor: obj.DiscountFactors.LiquidityDiscountFactor, 54 }, nil 55 } 56 57 // RewardFactors implements ReferralSetStatsResolver. 58 func (r *referralSetStatsResolver) RewardFactors(ctx context.Context, obj *v2.ReferralSetStats) (*RewardFactors, error) { 59 return &RewardFactors{ 60 InfrastructureFactor: obj.RewardFactors.InfrastructureRewardFactor, 61 MakerFactor: obj.RewardFactors.MakerRewardFactor, 62 LiquidityFactor: obj.RewardFactors.LiquidityRewardFactor, 63 }, nil 64 } 65 66 // RewardsFactorsMultiplier implements ReferralSetStatsResolver. 67 func (r *referralSetStatsResolver) RewardsFactorsMultiplier(ctx context.Context, obj *v2.ReferralSetStats) (*RewardFactors, error) { 68 return &RewardFactors{ 69 InfrastructureFactor: obj.RewardsFactorsMultiplier.InfrastructureRewardFactor, 70 MakerFactor: obj.RewardsFactorsMultiplier.MakerRewardFactor, 71 LiquidityFactor: obj.RewardsFactorsMultiplier.LiquidityRewardFactor, 72 }, nil 73 } 74 75 func (r *referralSetStatsResolver) AtEpoch(_ context.Context, obj *v2.ReferralSetStats) (int, error) { 76 if obj.AtEpoch > math.MaxInt { 77 return 0, errors.New("at_epoch is too large") 78 } 79 80 return int(obj.AtEpoch), nil 81 }