github.com/Finschia/finschia-sdk@v0.48.1/x/params/client/utils/utils.go (about) 1 package utils 2 3 import ( 4 "encoding/json" 5 "os" 6 7 "github.com/Finschia/finschia-sdk/codec" 8 "github.com/Finschia/finschia-sdk/x/params/types/proposal" 9 ) 10 11 type ( 12 // ParamChangesJSON defines a slice of ParamChangeJSON objects which can be 13 // converted to a slice of ParamChange objects. 14 ParamChangesJSON []ParamChangeJSON 15 16 // ParamChangeJSON defines a parameter change used in JSON input. This 17 // allows values to be specified in raw JSON instead of being string encoded. 18 ParamChangeJSON struct { 19 Subspace string `json:"subspace" yaml:"subspace"` 20 Key string `json:"key" yaml:"key"` 21 Value json.RawMessage `json:"value" yaml:"value"` 22 } 23 24 // ParamChangeProposalJSON defines a ParameterChangeProposal with a deposit used 25 // to parse parameter change proposals from a JSON file. 26 ParamChangeProposalJSON struct { 27 Title string `json:"title" yaml:"title"` 28 Description string `json:"description" yaml:"description"` 29 Changes ParamChangesJSON `json:"changes" yaml:"changes"` 30 Deposit string `json:"deposit" yaml:"deposit"` 31 } 32 ) 33 34 func NewParamChangeJSON(subspace, key string, value json.RawMessage) ParamChangeJSON { 35 return ParamChangeJSON{subspace, key, value} 36 } 37 38 // ToParamChange converts a ParamChangeJSON object to ParamChange. 39 func (pcj ParamChangeJSON) ToParamChange() proposal.ParamChange { 40 return proposal.NewParamChange(pcj.Subspace, pcj.Key, string(pcj.Value)) 41 } 42 43 // ToParamChanges converts a slice of ParamChangeJSON objects to a slice of 44 // ParamChange. 45 func (pcj ParamChangesJSON) ToParamChanges() []proposal.ParamChange { 46 res := make([]proposal.ParamChange, len(pcj)) 47 for i, pc := range pcj { 48 res[i] = pc.ToParamChange() 49 } 50 return res 51 } 52 53 // ParseParamChangeProposalJSON reads and parses a ParamChangeProposalJSON from 54 // file. 55 func ParseParamChangeProposalJSON(cdc *codec.LegacyAmino, proposalFile string) (ParamChangeProposalJSON, error) { 56 proposal := ParamChangeProposalJSON{} 57 58 contents, err := os.ReadFile(proposalFile) 59 if err != nil { 60 return proposal, err 61 } 62 63 if err := cdc.UnmarshalJSON(contents, &proposal); err != nil { 64 return proposal, err 65 } 66 67 return proposal, nil 68 }