Add difference

This commit is contained in:
idanoo 2023-01-30 13:23:05 +13:00
parent f1066d74d7
commit e4a20af1c3
Signed by: idanoo
GPG key ID: 387387CDBC02F132
2 changed files with 54 additions and 21 deletions

View file

@ -45,7 +45,7 @@ var (
// Mastodon // Mastodon
MASTODON_DB_SCHEMA string MASTODON_DB_SCHEMA string
MASTODON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;" MASTODON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False AND confirmed_at IS NOT NULL AND approved = True;"
MASTODON_IDENTIFIER = "mastodon" MASTODON_IDENTIFIER = "mastodon"
// Mobilizon // Mobilizon

View file

@ -12,6 +12,7 @@ type metric struct {
MetricName string `json:"metric_name"` MetricName string `json:"metric_name"`
MetricTime time.Time `json:"metric_time"` MetricTime time.Time `json:"metric_time"`
MetricValue int `json:"metric_value"` MetricValue int `json:"metric_value"`
PreviousMetricValue int `json:"-"`
} }
// persistMetrics - return any updated // persistMetrics - return any updated
@ -44,6 +45,7 @@ func getUserCounts() ([]metric, error) {
Service: PIXELFED_IDENTIFIER, Service: PIXELFED_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT, MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount, MetricValue: userCount,
PreviousMetricValue: getLastMetric(PIXELFED_IDENTIFIER),
} }
log.Printf("%s user count: %d", PIXELFED_IDENTIFIER, userCount) log.Printf("%s user count: %d", PIXELFED_IDENTIFIER, userCount)
metrics = append(metrics, m) metrics = append(metrics, m)
@ -59,6 +61,7 @@ func getUserCounts() ([]metric, error) {
Service: MATRIX_IDENTIFIDER, Service: MATRIX_IDENTIFIDER,
MetricName: METRICNAME_USERCOUNT, MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount, MetricValue: userCount,
PreviousMetricValue: getLastMetric(MATRIX_IDENTIFIDER),
} }
log.Printf("%s user count: %d", MATRIX_IDENTIFIDER, userCount) log.Printf("%s user count: %d", MATRIX_IDENTIFIDER, userCount)
metrics = append(metrics, m) metrics = append(metrics, m)
@ -74,6 +77,7 @@ func getUserCounts() ([]metric, error) {
Service: MASTODON_IDENTIFIER, Service: MASTODON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT, MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount, MetricValue: userCount,
PreviousMetricValue: getLastMetric(MASTODON_IDENTIFIER),
} }
log.Printf("%s user count: %d", MASTODON_IDENTIFIER, userCount) log.Printf("%s user count: %d", MASTODON_IDENTIFIER, userCount)
metrics = append(metrics, m) metrics = append(metrics, m)
@ -89,6 +93,7 @@ func getUserCounts() ([]metric, error) {
Service: MOBILIZON_IDENTIFIER, Service: MOBILIZON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT, MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount, MetricValue: userCount,
PreviousMetricValue: getLastMetric(MOBILIZON_IDENTIFIER),
} }
log.Printf("%s user count: %d", MOBILIZON_IDENTIFIER, userCount) log.Printf("%s user count: %d", MOBILIZON_IDENTIFIER, userCount)
metrics = append(metrics, m) metrics = append(metrics, m)
@ -104,6 +109,7 @@ func getUserCounts() ([]metric, error) {
Service: PEERTUBE_IDENTIFIER, Service: PEERTUBE_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT, MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount, MetricValue: userCount,
PreviousMetricValue: getLastMetric(PEERTUBE_IDENTIFIER),
} }
log.Printf("%s user count: %d", PEERTUBE_IDENTIFIER, userCount) log.Printf("%s user count: %d", PEERTUBE_IDENTIFIER, userCount)
metrics = append(metrics, m) metrics = append(metrics, m)
@ -114,5 +120,32 @@ func getUserCounts() ([]metric, error) {
} }
func getPrintableString(m metric) string { func getPrintableString(m metric) string {
return fmt.Sprintf("%s: %d", SERVICE_LINKS[m.Service], m.MetricValue) output := fmt.Sprintf("%s: %d", SERVICE_LINKS[m.Service], m.MetricValue)
diff := m.MetricValue - m.PreviousMetricValue
if diff < 0 {
output = fmt.Sprintf("%s (%d)", output, diff)
} else if diff > 0 {
output = fmt.Sprintf("%s (+%d)", output, diff)
}
return output
}
func getLastMetric(serviceName string) int {
val, err := runIntQuery(
POSTGRESQL_STATS_DB,
fmt.Sprintf(
"SELECT metric_value FROM %s WHERE metric_name = '%s' AND service = '%s' ORDER BY metric_time DESC LIMIT 1",
POSTGRESQL_STATS_TABLE,
METRICNAME_USERCOUNT,
serviceName,
),
)
if err != nil {
log.Println(err)
return 0
}
return val
} }