code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/proposal_edge_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 v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" 22 "code.vegaprotocol.io/vega/protos/vega" 23 types "code.vegaprotocol.io/vega/protos/vega" 24 ) 25 26 type proposalEdgeResolver VegaResolverRoot 27 28 func (r *proposalEdgeResolver) ProposalNode(ctx context.Context, data *v2.GovernanceDataEdge) (ProposalNode, error) { 29 if data == nil || data.Node == nil || data.Node.Proposal == nil { 30 return nil, ErrInvalidProposal 31 } 32 33 if data.GetNode().ProposalType == vega.GovernanceData_TYPE_BATCH { 34 return r.BatchProposal(ctx, data.Node) 35 } 36 37 return data.Node, nil 38 } 39 40 func (r *proposalEdgeResolver) Proposal(ctx context.Context, data *v2.GovernanceDataEdge) (*vega.GovernanceData, error) { 41 if data == nil || data.Node == nil || data.Node.Proposal == nil { 42 return nil, ErrInvalidProposal 43 } 44 45 if data.GetNode().ProposalType == vega.GovernanceData_TYPE_BATCH { 46 return nil, nil 47 } 48 49 return data.Node, nil 50 } 51 52 func (r *proposalEdgeResolver) BatchProposal(ctx context.Context, data *types.GovernanceData) (ProposalNode, error) { 53 proposal := data.Proposal 54 55 resolver := (*proposalResolver)(r) 56 57 party, err := resolver.Party(ctx, data) 58 if err != nil { 59 return nil, err 60 } 61 62 votes, err := resolver.Votes(ctx, data) 63 if err != nil { 64 return nil, err 65 } 66 67 return BatchProposal{ 68 ID: &proposal.Id, 69 Reference: proposal.Reference, 70 Party: party, 71 State: proposal.State, 72 Datetime: proposal.Timestamp, 73 Rationale: proposal.Rationale, 74 BatchTerms: proposal.BatchTerms, 75 Votes: votes, 76 RejectionReason: proposal.Reason, 77 ErrorDetails: proposal.ErrorDetails, 78 RequiredMajority: proposal.RequiredMajority, 79 RequiredParticipation: proposal.RequiredParticipation, 80 RequiredLpMajority: proposal.RequiredLiquidityProviderMajority, 81 RequiredLpParticipation: proposal.RequiredLiquidityProviderParticipation, 82 SubProposals: data.Proposals, 83 }, nil 84 }