forked from OpenBazaar/openbazaar-go
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Migration017.go
91 lines (74 loc) · 2.48 KB
/
Migration017.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package migrations
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path"
)
var (
Migration017PushToBefore = []string{
"QmWbi8z4uPkEdrWHtgxCkQGE5vxJnrStXAeEQnupmQnKRh",
"QmRh7fSZyFHesEL9aTmdxbrvMFxzyFxoaQGjYBotot6WLw",
"QmZLs6zVpVtkoR8oYyAbCxujvC6weU5CgUPTYx8zKMAtTf",
}
Migration017PushToAfter = []string{
"QmWbi8z4uPkEdrWHtgxCkQGE5vxJnrStXAeEQnupmQnKRh",
"Qma2LRYB4xLaoxsMCL2kb93WKCW4EotUMhgvQUSqE6tCka",
"QmZLs6zVpVtkoR8oYyAbCxujvC6weU5CgUPTYx8zKMAtTf",
"QmNSnS2K3TkSQjxJhaRBSZxotUQp1yxLss4zKDVbhRc9nv",
}
)
type migration017DataSharing struct {
AcceptStoreRequests bool
PushTo []string
}
type Migration017 struct{}
func (Migration017) Up(repoPath, dbPassword string, testnet bool) error {
var (
configMap = map[string]interface{}{}
configBytes, err = ioutil.ReadFile(path.Join(repoPath, "config"))
)
if err != nil {
return fmt.Errorf("reading config: %s", err.Error())
}
if err = json.Unmarshal(configBytes, &configMap); err != nil {
return fmt.Errorf("unmarshal config: %s", err.Error())
}
configMap["DataSharing"] = migration017DataSharing{PushTo: Migration017PushToAfter}
newConfigBytes, err := json.MarshalIndent(configMap, "", " ")
if err != nil {
return fmt.Errorf("marshal migrated config: %s", err.Error())
}
if err := ioutil.WriteFile(path.Join(repoPath, "config"), newConfigBytes, os.ModePerm); err != nil {
return fmt.Errorf("writing migrated config: %s", err.Error())
}
if err := writeRepoVer(repoPath, 18); err != nil {
return fmt.Errorf("bumping repover to 18: %s", err.Error())
}
return nil
}
func (Migration017) Down(repoPath, dbPassword string, testnet bool) error {
var (
configMap = map[string]interface{}{}
configBytes, err = ioutil.ReadFile(path.Join(repoPath, "config"))
)
if err != nil {
return fmt.Errorf("reading config: %s", err.Error())
}
if err = json.Unmarshal(configBytes, &configMap); err != nil {
return fmt.Errorf("unmarshal config: %s", err.Error())
}
configMap["DataSharing"] = migration017DataSharing{PushTo: Migration017PushToBefore}
newConfigBytes, err := json.MarshalIndent(configMap, "", " ")
if err != nil {
return fmt.Errorf("marshal migrated config: %s", err.Error())
}
if err := ioutil.WriteFile(path.Join(repoPath, "config"), newConfigBytes, os.ModePerm); err != nil {
return fmt.Errorf("writing migrated config: %s", err.Error())
}
if err := writeRepoVer(repoPath, 17); err != nil {
return fmt.Errorf("dropping repover to 17: %s", err.Error())
}
return nil
}