This repository was archived by the owner on Apr 1, 2020. It is now read-only.
forked from oi-archive/backend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata.go
71 lines (59 loc) · 1.35 KB
/
data.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
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
var BasePath string
type ProblemSet struct {
Name string
Id string
ProblemMap map[string]string
ProblemArray ProblemList
Css []byte
MaxPage int
}
var ProblemSets []ProblemSet
var ProblemSetFile []struct {
Name string
Id string
}
type ProblemList []struct {
Title string `json:"title"`
Pid string `json:"pid"`
}
func MakeReadFileError(filename string, err error) error {
return fmt.Errorf("Read File %s error: [%w]", filename, err)
}
func UpdateData() error {
b, err := ioutil.ReadFile(BasePath + "/problemset.json")
if err != nil {
return MakeReadFileError("problemset.json", err)
}
err = json.Unmarshal(b, &ProblemSetFile)
if err != nil {
return err
}
ProblemSets = []ProblemSet{}
for _, i := range ProblemSetFile {
ps := ProblemSet{Name: i.Name, Id: i.Id}
path := BasePath + "/" + i.Id
b, err := ioutil.ReadFile(path + "/problemlist.json")
if err != nil {
return MakeReadFileError(path+"/problemlist.json", err)
}
list := ProblemList{}
err = json.Unmarshal(b, &list)
if err != nil {
return err
}
ps.MaxPage = (len(list)-1)/50 + 1
ps.ProblemArray = list
ps.ProblemMap = make(map[string]string)
for _, j := range list {
ps.ProblemMap[j.Pid] = j.Title
}
ProblemSets = append(ProblemSets, ps)
}
return nil
}