/
migrate.go
51 lines (45 loc) · 1.71 KB
/
migrate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package v0_36
import (
v034gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v0_34"
)
// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36
// genesis state. This migration flattens the deposits and votes and updates the
// proposal content to the new
func Migrate(oldGenState v034gov.GenesisState) GenesisState {
deposits := make(v034gov.Deposits, len(oldGenState.Deposits))
for i, deposit := range oldGenState.Deposits {
deposits[i] = deposit.Deposit
}
votes := make(v034gov.Votes, len(oldGenState.Votes))
for i, vote := range oldGenState.Votes {
votes[i] = vote.Vote
}
proposals := make([]Proposal, len(oldGenState.Proposals))
for i, proposal := range oldGenState.Proposals {
proposals[i] = Proposal{
Content: migrateContent(proposal.ProposalContent),
ProposalID: proposal.ProposalID,
Status: proposal.Status,
FinalTallyResult: proposal.FinalTallyResult,
SubmitTime: proposal.SubmitTime,
DepositEndTime: proposal.DepositEndTime,
TotalDeposit: proposal.TotalDeposit,
VotingStartTime: proposal.VotingStartTime,
VotingEndTime: proposal.VotingEndTime,
}
}
return NewGenesisState(
oldGenState.StartingProposalID, deposits, votes, proposals,
oldGenState.DepositParams, oldGenState.VotingParams, oldGenState.TallyParams,
)
}
func migrateContent(proposalContent v034gov.ProposalContent) (content Content) {
switch proposalContent.ProposalType() {
case v034gov.ProposalTypeText:
return NewTextProposal(proposalContent.GetTitle(), proposalContent.GetDescription())
case v034gov.ProposalTypeSoftwareUpgrade:
return NewSoftwareUpgradeProposal(proposalContent.GetTitle(), proposalContent.GetDescription())
default:
return nil
}
}