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