code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/proposal_terms_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 "time" 22 23 "code.vegaprotocol.io/vega/libs/ptr" 24 types "code.vegaprotocol.io/vega/protos/vega" 25 vega "code.vegaprotocol.io/vega/protos/vega" 26 ) 27 28 var ErrUnsupportedProposalTermsChanges = errors.New("unsupported proposal terms changes") 29 30 type batchProposalTermsResolver VegaResolverRoot 31 32 func (r *batchProposalTermsResolver) ClosingDatetime(ctx context.Context, obj *vega.BatchProposalTerms) (int64, error) { 33 // this is a unix timestamp (specified by users) 34 // needs to convert to time then UnixNano for the Timestamp resolver to work 35 return time.Unix(obj.ClosingTimestamp, 0).UnixNano(), nil 36 } 37 38 type batchProposalTermsChangeResolver VegaResolverRoot 39 40 func (r *batchProposalTermsChangeResolver) EnactmentDatetime(ctx context.Context, obj *vega.BatchProposalTermsChange) (*int64, error) { 41 var dt *int64 42 if obj.EnactmentTimestamp != 0 { 43 // this is a unix timestamp (specified by users) 44 // needs to convert to time then UnixNano for the Timestamp resolver to work 45 dt = ptr.From(time.Unix(obj.EnactmentTimestamp, 0).UnixNano()) 46 } 47 return dt, nil 48 } 49 50 func (r *batchProposalTermsChangeResolver) ValidationDatetime(ctx context.Context, obj *vega.BatchProposalTermsChange) (*int64, error) { 51 var dt *int64 52 if obj.ValidationTimestamp != 0 { 53 // this is a unix timestamp (specified by users) 54 // needs to convert to time then UnixNano for the Timestamp resolver to work 55 dt = ptr.From(time.Unix(obj.ValidationTimestamp, 0).UnixNano()) 56 } 57 return dt, nil 58 } 59 60 func (r *batchProposalTermsChangeResolver) Change(ctx context.Context, obj *vega.BatchProposalTermsChange) (ProposalChange, error) { 61 switch obj.Change.(type) { 62 case *types.BatchProposalTermsChange_UpdateMarket: 63 return obj.GetUpdateMarket(), nil 64 case *types.BatchProposalTermsChange_UpdateNetworkParameter: 65 return obj.GetUpdateNetworkParameter(), nil 66 case *types.BatchProposalTermsChange_NewMarket: 67 return obj.GetNewMarket(), nil 68 case *types.BatchProposalTermsChange_NewFreeform: 69 return obj.GetNewFreeform(), nil 70 case *types.BatchProposalTermsChange_NewAsset: 71 return obj.GetNewAsset(), nil 72 case *types.BatchProposalTermsChange_UpdateAsset: 73 return obj.GetUpdateAsset(), nil 74 case *types.BatchProposalTermsChange_CancelTransfer: 75 return obj.GetCancelTransfer(), nil 76 case *types.BatchProposalTermsChange_NewTransfer: 77 return obj.GetNewTransfer(), nil 78 case *types.BatchProposalTermsChange_NewSpotMarket: 79 return obj.GetNewSpotMarket(), nil 80 case *types.BatchProposalTermsChange_UpdateSpotMarket: 81 return obj.GetUpdateSpotMarket(), nil 82 case *types.BatchProposalTermsChange_UpdateMarketState: 83 return obj.GetUpdateMarketState(), nil 84 case *types.BatchProposalTermsChange_UpdateReferralProgram: 85 return obj.GetUpdateReferralProgram(), nil 86 case *types.BatchProposalTermsChange_UpdateVolumeDiscountProgram: 87 return obj.GetUpdateVolumeDiscountProgram(), nil 88 default: 89 return nil, ErrUnsupportedProposalTermsChanges 90 } 91 } 92 93 type proposalTermsResolver VegaResolverRoot 94 95 func (r *proposalTermsResolver) ClosingDatetime(ctx context.Context, obj *types.ProposalTerms) (int64, error) { 96 // this is a unix timestamp (specified by users) 97 // needs to convert to time then UnixNano for the Timestamp resolver to work 98 return time.Unix(obj.ClosingTimestamp, 0).UnixNano(), nil 99 } 100 101 func (r *proposalTermsResolver) EnactmentDatetime(ctx context.Context, obj *types.ProposalTerms) (*int64, error) { 102 var dt *int64 103 if obj.EnactmentTimestamp != 0 { 104 // this is a unix timestamp (specified by users) 105 // needs to convert to time then UnixNano for the Timestamp resolver to work 106 dt = ptr.From(time.Unix(obj.EnactmentTimestamp, 0).UnixNano()) 107 } 108 return dt, nil 109 } 110 111 func (r *proposalTermsResolver) ValidationDatetime(ctx context.Context, obj *types.ProposalTerms) (*int64, error) { 112 var dt *int64 113 if obj.ValidationTimestamp != 0 { 114 // this is a unix timestamp (specified by users) 115 // needs to convert to time then UnixNano for the Timestamp resolver to work 116 dt = ptr.From(time.Unix(obj.ValidationTimestamp, 0).UnixNano()) 117 } 118 return dt, nil 119 } 120 121 func (r *proposalTermsResolver) Change(ctx context.Context, obj *types.ProposalTerms) (ProposalChange, error) { 122 switch obj.Change.(type) { 123 case *types.ProposalTerms_UpdateMarket: 124 return obj.GetUpdateMarket(), nil 125 case *types.ProposalTerms_UpdateNetworkParameter: 126 return obj.GetUpdateNetworkParameter(), nil 127 case *types.ProposalTerms_NewMarket: 128 return obj.GetNewMarket(), nil 129 case *types.ProposalTerms_NewAsset: 130 return obj.GetNewAsset(), nil 131 case *types.ProposalTerms_NewFreeform: 132 return obj.GetNewFreeform(), nil 133 case *types.ProposalTerms_UpdateAsset: 134 return obj.GetUpdateAsset(), nil 135 case *types.ProposalTerms_CancelTransfer: 136 return obj.GetCancelTransfer(), nil 137 case *types.ProposalTerms_NewTransfer: 138 return obj.GetNewTransfer(), nil 139 case *types.ProposalTerms_NewSpotMarket: 140 return obj.GetNewSpotMarket(), nil 141 case *types.ProposalTerms_UpdateSpotMarket: 142 return obj.GetUpdateSpotMarket(), nil 143 case *types.ProposalTerms_UpdateMarketState: 144 return obj.GetUpdateMarketState(), nil 145 case *types.ProposalTerms_UpdateReferralProgram: 146 return obj.GetUpdateReferralProgram(), nil 147 case *types.ProposalTerms_UpdateVolumeDiscountProgram: 148 return obj.GetUpdateVolumeDiscountProgram(), nil 149 default: 150 return nil, ErrUnsupportedProposalTermsChanges 151 } 152 }