code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/new_transfer_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 21 "code.vegaprotocol.io/vega/protos/vega" 22 eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" 23 ) 24 25 type cancelTransferResolver VegaResolverRoot 26 27 func (r *cancelTransferResolver) TransferID(ctx context.Context, obj *vega.CancelTransfer) (string, error) { 28 return obj.Changes.TransferId, nil 29 } 30 31 type newTransferResolver VegaResolverRoot 32 33 func (r *newTransferResolver) Source(ctx context.Context, obj *vega.NewTransfer) (string, error) { 34 return obj.Changes.Source, nil 35 } 36 37 func (r *newTransferResolver) SourceType(ctx context.Context, obj *vega.NewTransfer) (vega.AccountType, error) { 38 return obj.Changes.SourceType, nil 39 } 40 41 func (r *newTransferResolver) Destination(ctx context.Context, obj *vega.NewTransfer) (string, error) { 42 return obj.Changes.Destination, nil 43 } 44 45 func (r *newTransferResolver) DestinationType(ctx context.Context, obj *vega.NewTransfer) (vega.AccountType, error) { 46 return obj.Changes.DestinationType, nil 47 } 48 49 func (r *newTransferResolver) Asset(ctx context.Context, obj *vega.NewTransfer) (*vega.Asset, error) { 50 return r.r.getAssetByID(ctx, obj.Changes.Asset) 51 } 52 53 func (r *newTransferResolver) FractionOfBalance(ctx context.Context, obj *vega.NewTransfer) (string, error) { 54 return obj.Changes.FractionOfBalance, nil 55 } 56 57 func (r *newTransferResolver) Amount(ctx context.Context, obj *vega.NewTransfer) (string, error) { 58 return obj.Changes.Amount, nil 59 } 60 61 func (r *newTransferResolver) TransferType(ctx context.Context, obj *vega.NewTransfer) (GovernanceTransferType, error) { 62 if obj.Changes.TransferType == vega.GovernanceTransferType_GOVERNANCE_TRANSFER_TYPE_ALL_OR_NOTHING { 63 return GovernanceTransferTypeGovernanceTransferTypeAllOrNothing, nil 64 } else { 65 return GovernanceTransferTypeGovernanceTransferTypeBestEffort, nil 66 } 67 } 68 69 func (r *newTransferResolver) Kind(ctx context.Context, obj *vega.NewTransfer) (GovernanceTransferKind, error) { 70 switch obj.Changes.GetKind().(type) { 71 case *vega.NewTransferConfiguration_OneOff: 72 // Need the concrete type specified in gqlgen.yml, which is vega/events/v1.RecurringTransfer not 73 // vega.RecurringTransfer that is in our NewTransfer or else gqlgen won't be able to map it. 74 govTransfer := obj.Changes.GetOneOff() 75 evtTransfer := &eventspb.OneOffGovernanceTransfer{ 76 DeliverOn: govTransfer.DeliverOn, 77 } 78 return evtTransfer, nil 79 case *vega.NewTransferConfiguration_Recurring: 80 govTransfer := obj.Changes.GetRecurring() 81 evtTransfer := &eventspb.RecurringGovernanceTransfer{ 82 StartEpoch: govTransfer.StartEpoch, 83 EndEpoch: govTransfer.EndEpoch, 84 DispatchStrategy: govTransfer.DispatchStrategy, 85 } 86 return evtTransfer, nil 87 default: 88 return nil, ErrUnsupportedTransferKind 89 } 90 }