code.vegaprotocol.io/vega@v0.79.0/commands/vote_submission.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 commands
    17  
    18  import (
    19  	types "code.vegaprotocol.io/vega/protos/vega"
    20  	commandspb "code.vegaprotocol.io/vega/protos/vega/commands/v1"
    21  )
    22  
    23  func CheckVoteSubmission(cmd *commandspb.VoteSubmission) error {
    24  	return checkVoteSubmission(cmd).ErrorOrNil()
    25  }
    26  
    27  func checkVoteSubmission(cmd *commandspb.VoteSubmission) Errors {
    28  	errs := NewErrors()
    29  
    30  	if cmd == nil {
    31  		return errs.FinalAddForProperty("vote_submission", ErrIsRequired)
    32  	}
    33  
    34  	if len(cmd.ProposalId) <= 0 {
    35  		errs.AddForProperty("vote_submission.proposal_id", ErrIsRequired)
    36  	} else if !IsVegaID(cmd.ProposalId) {
    37  		errs.AddForProperty("vote_submission.proposal_id", ErrShouldBeAValidVegaID)
    38  	}
    39  
    40  	if cmd.Value == types.Vote_VALUE_UNSPECIFIED {
    41  		errs.AddForProperty("vote_submission.value", ErrIsRequired)
    42  	}
    43  
    44  	if _, ok := types.Vote_Value_name[int32(cmd.Value)]; !ok {
    45  		errs.AddForProperty("vote_submission.value", ErrIsNotValid)
    46  	}
    47  
    48  	return errs
    49  }