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  }