Add DB stats
This commit is contained in:
parent
5405923aa2
commit
e177977c30
7
db.go
7
db.go
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
type Database interface {
|
type Database interface {
|
||||||
Close() error
|
Close() error
|
||||||
|
Stats() (*DatabaseStats, error)
|
||||||
|
|
||||||
ListUsers() ([]User, error)
|
ListUsers() ([]User, error)
|
||||||
GetUser(username string) (*User, error)
|
GetUser(username string) (*User, error)
|
||||||
@ -26,6 +27,12 @@ type Database interface {
|
|||||||
StoreClientDeliveryReceipts(networkID int64, client string, receipts []DeliveryReceipt) error
|
StoreClientDeliveryReceipts(networkID int64, client string, receipts []DeliveryReceipt) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DatabaseStats struct {
|
||||||
|
Users int64
|
||||||
|
Networks int64
|
||||||
|
Channels int64
|
||||||
|
}
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
ID int64
|
ID int64
|
||||||
Username string
|
Username string
|
||||||
|
16
db_sqlite.go
16
db_sqlite.go
@ -205,6 +205,22 @@ func (db *SqliteDB) upgrade() error {
|
|||||||
return tx.Commit()
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *SqliteDB) Stats() (*DatabaseStats, error) {
|
||||||
|
db.lock.RLock()
|
||||||
|
defer db.lock.RUnlock()
|
||||||
|
|
||||||
|
var stats DatabaseStats
|
||||||
|
row := db.db.QueryRow(`SELECT
|
||||||
|
(SELECT COUNT(*) FROM User) AS users,
|
||||||
|
(SELECT COUNT(*) FROM Network) AS networks,
|
||||||
|
(SELECT COUNT(*) FROM Channel) AS channels`)
|
||||||
|
if err := row.Scan(&stats.Users, &stats.Networks, &stats.Channels); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &stats, nil
|
||||||
|
}
|
||||||
|
|
||||||
func toNullString(s string) sql.NullString {
|
func toNullString(s string) sql.NullString {
|
||||||
return sql.NullString{
|
return sql.NullString{
|
||||||
String: s,
|
String: s,
|
||||||
|
@ -1026,7 +1026,11 @@ func handleServiceChannelUpdate(dc *downstreamConn, params []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handleServiceServerStatus(dc *downstreamConn, params []string) error {
|
func handleServiceServerStatus(dc *downstreamConn, params []string) error {
|
||||||
stats := dc.user.srv.Stats()
|
dbStats, err := dc.user.srv.db.Stats()
|
||||||
sendServicePRIVMSG(dc, fmt.Sprintf("%v users, %v downstreams", stats.Users, stats.Downstreams))
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
serverStats := dc.user.srv.Stats()
|
||||||
|
sendServicePRIVMSG(dc, fmt.Sprintf("%v/%v users, %v downstreams, %v networks, %v channels", serverStats.Users, dbStats.Users, serverStats.Downstreams, dbStats.Networks, dbStats.Channels))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user