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 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}