-
Notifications
You must be signed in to change notification settings - Fork 80
/
main.go
80 lines (67 loc) · 1.68 KB
/
main.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
package main
import (
"log"
"os"
libapp "github.com/KyberNetwork/reserve-stats/lib/app"
"github.com/KyberNetwork/reserve-stats/lib/httputil"
"github.com/KyberNetwork/reserve-stats/lib/influxdb"
"github.com/KyberNetwork/reserve-stats/tradelogs/common"
"github.com/KyberNetwork/reserve-stats/users/http"
"github.com/KyberNetwork/reserve-stats/users/storage"
"github.com/KyberNetwork/tokenrate/coingecko"
"github.com/urfave/cli"
)
const defaultDB = "users"
func main() {
app := libapp.NewApp()
app.Name = "User stat module"
app.Usage = "Store and return user stat information"
app.Action = run
app.Version = "0.0.1"
app.Flags = append(app.Flags, libapp.NewPostgreSQLFlags(defaultDB)...)
app.Flags = append(app.Flags, httputil.NewHTTPCliFlags(httputil.UsersPort)...)
app.Flags = append(app.Flags, influxdb.NewCliFlags()...)
if err := app.Run(os.Args); err != nil {
log.Fatal(err)
}
}
func run(c *cli.Context) error {
if err := libapp.Validate(c); err != nil {
return err
}
logger, err := libapp.NewLogger(c)
if err != nil {
return err
}
defer logger.Sync()
sugar := logger.Sugar()
sugar.Info("Run user module")
db, err := libapp.NewDBFromContext(c)
if err != nil {
return err
}
userDB, err := storage.NewDB(
sugar,
db,
)
if err != nil {
return err
}
defer userDB.Close()
// Store trade logs into influx DB
influxClient, err := influxdb.NewClientFromContext(c)
if err != nil {
return err
}
influxStorage, err := storage.NewInfluxStorage(
sugar,
common.DatabaseName,
influxClient,
)
if err != nil {
return err
}
server := http.NewServer(sugar, coingecko.New(), userDB,
httputil.NewHTTPAddressFromContext(c), influxStorage)
return server.Run()
}