forked from tanitall/memo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
backfill_root_tx.go
61 lines (59 loc) · 1.44 KB
/
backfill_root_tx.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
package cmd
import (
"fmt"
"github.com/jchavannes/jgo/jerr"
"github.com/memocash/memo/app/db"
"github.com/spf13/cobra"
"log"
)
var backfillRootTxCmd = &cobra.Command{
Use: "backfill-root-tx",
RunE: func(c *cobra.Command, args []string) error {
var printStatus = func(offset uint, postsUpdated int) {
fmt.Printf("offset: %d, posts-updated: %d\n", offset, postsUpdated)
}
var offset uint
var postsUpdated int
for ; offset < 100000; offset += 25 {
memoPosts, err := db.GetPosts(offset)
if err != nil {
if db.IsRecordNotFoundError(err) {
break
}
log.Fatal(jerr.Get("error getting memo posts", err))
}
if len(memoPosts) == 0 {
break
}
for _, memoPost := range memoPosts {
if len(memoPost.ParentTxHash) == 0 {
continue
}
var rootTxHash []byte
prevMemoPost, err := db.GetMemoPost(memoPost.ParentTxHash)
if err != nil {
jerr.Get("error getting reply post from db", err).Print()
continue
} else {
if len(prevMemoPost.ParentTxHash) > 0 {
rootTxHash = prevMemoPost.RootTxHash
} else {
rootTxHash = prevMemoPost.TxHash
}
}
memoPost.RootTxHash = rootTxHash
err = memoPost.Save()
if err != nil {
log.Fatal(jerr.Get("error saving memo post", err))
}
postsUpdated++
if postsUpdated%1000 == 0 {
printStatus(offset, postsUpdated)
}
}
}
printStatus(offset, postsUpdated)
fmt.Printf("all done\n")
return nil
},
}