go-mastodon-stats/internal/gomastodonstats/metrics.go
2023-01-30 11:11:25 +13:00

91 lines
2.1 KiB
Go

package gomastodonstats
import (
"log"
"time"
)
// Stores out metric/row data
type metric struct {
Service string `json:"service"`
MetricName string `json:"metric_name"`
MetricTime time.Time `json:"metric_time"`
MetricValue int `json:"metric_value"`
}
func persistMetrics(metrics []metric) {
startOfDay := getStartofDay()
for _, v := range metrics {
v.MetricTime = startOfDay
err := insertValues(v)
if err != nil {
log.Println(err)
}
}
}
func getUserCounts() ([]metric, error) {
var metrics []metric
if PIXELFED_DB_SCHEMA != "" {
userCount, err := runIntQuery(PIXELFED_DB_SCHEMA, PIXELFED_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: PIXELFED_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", PIXELFED_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
if MASTODON_DB_SCHEMA != "" {
userCount, err := runIntQuery(MASTODON_DB_SCHEMA, MASTODON_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: MASTODON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", MASTODON_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
if MOBILIZON_DB_SCHEMA != "" {
userCount, err := runIntQuery(MOBILIZON_DB_SCHEMA, MOBILIZON_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: MOBILIZON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", MOBILIZON_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
if MOBILIZON_DB_SCHEMA != "" {
userCount, err := runIntQuery(PEERTUBE_DB_SCHEMA, PEERTUBE_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: PEERTUBE_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", PEERTUBE_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
return metrics, nil
}