diff --git a/config.ini b/config.ini index c3d5fc4..ed80bfa 100644 --- a/config.ini +++ b/config.ini @@ -13,3 +13,6 @@ DBFile = ./data.db ; Ob Fenster geöffnet werden sollen, oder nicht. OpenWindows = false OpenBrowser = false + +; Metrics +SaveMetrics = true \ No newline at end of file diff --git a/config.ini.sample b/config.ini.sample index cacbf8d..1d0f59b 100644 --- a/config.ini.sample +++ b/config.ini.sample @@ -12,4 +12,7 @@ Interface = 127.0.0.1:8080 DBFile = ./data.db ; Ob Fenster geöffnet werden sollen, oder nicht. OpenWindows = true -OpenBrowser = false \ No newline at end of file +OpenBrowser = false + +; Metrics +SaveMetrics = false \ No newline at end of file diff --git a/main.go b/main.go index fc311ec..662fb38 100644 --- a/main.go +++ b/main.go @@ -53,6 +53,16 @@ func main() { } }() + if config.GetSaveMetrics() { + log.Info("Saving Metrics.") + go func() { + for { + models.AddMetric() + time.Sleep(60 * time.Second) + } + }() + } + // Windows if config.GetOpenWindows() { go windows.OpenWindows() diff --git a/pkg/config/config.go b/pkg/config/config.go index 66da4b7..cf49490 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -13,6 +13,7 @@ type Configuration struct { Mode int OpenWindows bool OpenBrowser bool + SaveMetrics bool } var siteConf = &Configuration{} @@ -59,3 +60,8 @@ func GetOpenWindows() bool { func GetOpenBrowser() bool { return siteConf.OpenBrowser } + +// GetSaveMetrics returns whether to use metrics or not +func GetSaveMetrics() bool { + return siteConf.SaveMetrics +} diff --git a/pkg/models/db.go b/pkg/models/db.go index e4900cb..b77160e 100644 --- a/pkg/models/db.go +++ b/pkg/models/db.go @@ -22,7 +22,7 @@ func DBinit() { x.ShowSQL(false) x.Logger().SetLevel(core.LOG_DEBUG) - x.Sync(&Kofi{}, &Community{}) + x.Sync(&Kofi{}, &Community{}, &Metric{}) return } diff --git a/pkg/models/metri.go b/pkg/models/metri.go new file mode 100644 index 0000000..daecf64 --- /dev/null +++ b/pkg/models/metri.go @@ -0,0 +1,29 @@ +package models + +import "github.com/labstack/gommon/log" + +type Metric struct { + ID int64 `xorm:"pk autoincr" json:"id" form:"id"` + Kcoins int64 `xorm:"bigint(11)"` + CommunityID int64 `xorm:"bigint(11)"` + CreatedUnix int64 `xorm:"created"` +} + +func AddMetric() { + allCommunites := []Community{} + err := x.Find(&allCommunites) + if err != nil { + log.Error("Error getting metric data", err) + } + + for _, community := range allCommunites { + m := Metric{ + Kcoins: community.KCoins, + CommunityID: community.ID, + } + _, err := x.Insert(m) + if err != nil { + log.Error("Error saving metrics", err) + } + } +}