arnaucube
arnaucube/goBlockchainDataAnalysisPublic Self-hosted repository
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}