generated from GalvinGao/gofiber-template
/
battle_csv_import.go
97 lines (79 loc) · 2.24 KB
/
battle_csv_import.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
92
93
94
95
96
97
package script
import (
"log"
"strings"
)
type BattleCSVImport struct {
path string
}
func NewBattleCSVImport(path string) *BattleCSVImport {
return &BattleCSVImport{
path: path,
}
}
func (c *BattleCSVImport) Run() error {
records := ReadCSVFile(c.path)
records = records[1:]
for _, row := range records {
log.Default().Printf("importing row '%s'\n", row)
content := c.convertRowToContent(row)
log.Println(content)
if len(content) > 0 {
PostEvent(content, "battle")
}
}
return nil
}
func (c *BattleCSVImport) convertRowToContent(row []string) map[string]any {
content := make(map[string]any)
columnHandler := GetColumnHandler()
band := columnHandler.HandleBand(strings.TrimSpace(row[1]))
if band != "" {
content["band"] = band
}
grade := columnHandler.HandleInt(strings.TrimSpace(row[2]))
if grade.Valid {
content["grade"] = grade.Int64
}
floor := columnHandler.HandleInt(strings.TrimSpace(row[3]))
if floor.Valid {
content["floor"] = floor.Int64
}
isPortal := columnHandler.HandleBool(strings.TrimSpace(row[4]))
if isPortal.Valid {
content["isPortal"] = isPortal.Bool
}
nodeType := columnHandler.HandleNodeType(strings.TrimSpace(row[5]))
if nodeType != "" {
content["nodeType"] = nodeType
}
visionBeforeBattle := columnHandler.HandleInt(strings.TrimSpace(row[6]))
if visionBeforeBattle.Valid {
content["visionBeforeBattle"] = visionBeforeBattle.Int64
}
isPerfect := columnHandler.HandleBool(strings.TrimSpace(row[7]))
if isPerfect.Valid {
content["isPerfect"] = isPerfect.Bool
}
dropGold := columnHandler.HandleInt(strings.TrimSpace(row[8]))
if dropGold.Valid {
content["dropGold"] = dropGold.Int64
}
dropVision := columnHandler.HandleInt(strings.TrimSpace(row[9]))
if dropVision.Valid {
content["dropVision"] = dropVision.Int64
}
dropRecruitTickets := columnHandler.HandleRecruitTickets(strings.TrimSpace(row[10]), strings.TrimSpace(row[11]))
if dropRecruitTickets != nil {
content["dropRecruitTickets"] = dropRecruitTickets
}
dropTotem := columnHandler.HandleTotems(strings.TrimSpace(row[12]))
if dropTotem != nil {
content["dropTotem"] = dropTotem
}
gainExp := columnHandler.HandleInt(strings.TrimSpace(row[13]))
if gainExp.Valid {
content["gainExp"] = gainExp.Int64
}
return content
}