goBlockchainDataAnalysis/dateAnalysis.go
dateAnalysis.goRaw
1package main
2
3import (
4 "fmt"
5 "strconv"
6 "time"
7
8 "gopkg.in/mgo.v2/bson"
9)
10
11func map24hours() map[int]int {
12 h := make(map[int]int)
13 for i := 0; i < 24; i++ {
14 h[i] = 0
15 }
16 return h
17}
18func decomposeDate(blockTime int64) (int, int, int, int) {
19 /*i, err := strconv.ParseInt(blockTime, 10, 64)
20 if err != nil {
21 panic(err)
22 }*/
23 i := blockTime
24 year := time.Unix(i, 0).Year()
25 month := time.Unix(i, 0).Month()
26 day := time.Unix(i, 0).Day()
27 hour := time.Unix(i, 0).Hour()
28 return year, int(month), day, hour
29}
30func unixTimeToTime(blockTime int64) time.Time {
31 return time.Unix(blockTime, 0)
32}
33func timeToDate(blockTime int64) string {
34 stringTime := strconv.FormatInt(blockTime, 10)
35 i, err := strconv.ParseInt(stringTime, 10, 64)
36 if err != nil {
37 panic(err)
38 }
39 tm := time.Unix(i, 0)
40 //fmt.Println(tm)
41 stringDate := tm.String()
42 //fmt.Println(stringDate)
43 return stringDate
44}
45func hourAnalysis(e EdgeModel, blockTime int64) {
46 //fmt.Println(blockTime)
47 /*date := timeToDate(blockTime)
48 dateHour := strings.Split(date, " ")[1]
49 hourString := strings.Split(dateHour, ":")[0]*/
50 _, _, _, hour := decomposeDate(blockTime)
51
52 hourCount := ChartCountModel{}
53 err := hourCountCollection.Find(bson.M{"hour": hour}).One(&hourCount)
54 if err != nil {
55 //date not yet in DB
56 var hourCount ChartCountModel
57 hourCount.Elem = hour
58 hourCount.Count = 1
59 err = hourCountCollection.Insert(hourCount)
60 check(err)
61 } else {
62 hourCount.Count++
63 err = hourCountCollection.Update(bson.M{"hour": hour}, &hourCount)
64 check(err)
65 }
66}
67func dateAnalysis(e EdgeModel, blockTime int64) {
68 fmt.Println(blockTime)
69 date := timeToDate(blockTime)
70
71 dateCount := DateCountModel{}
72 err := dateCountCollection.Find(bson.M{"date": date}).One(&dateCount)
73 if err != nil {
74 //date not yet in DB
75 var dateCount DateCountModel
76 dateCount.Date = date
77 dateCount.Time = blockTime
78 dateCount.Count = 1
79 err = dateCountCollection.Insert(dateCount)
80 check(err)
81 } else {
82 dateCount.Count++
83 err = dateCountCollection.Update(bson.M{"date": date}, &dateCount)
84 check(err)
85 }
86}