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