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 {
|
||||
Close() error
|
||||
Stats() (*DatabaseStats, error)
|
||||
|
||||
ListUsers() ([]User, error)
|
||||
GetUser(username string) (*User, error)
|
||||
@ -26,6 +27,12 @@ type Database interface {
|
||||
StoreClientDeliveryReceipts(networkID int64, client string, receipts []DeliveryReceipt) error
|
||||
}
|
||||
|
||||
type DatabaseStats struct {
|
||||
Users int64
|
||||
Networks int64
|
||||
Channels int64
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int64
|
||||
Username string
|
||||
|
16
db_sqlite.go
16
db_sqlite.go
@ -205,6 +205,22 @@ func (db *SqliteDB) upgrade() error {
|
||||
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 {
|
||||
return sql.NullString{
|
||||
String: s,
|
||||
|
@ -1026,7 +1026,11 @@ func handleServiceChannelUpdate(dc *downstreamConn, params []string) error {
|
||||
}
|
||||
|
||||
func handleServiceServerStatus(dc *downstreamConn, params []string) error {
|
||||
stats := dc.user.srv.Stats()
|
||||
sendServicePRIVMSG(dc, fmt.Sprintf("%v users, %v downstreams", stats.Users, stats.Downstreams))
|
||||
dbStats, err := dc.user.srv.db.Stats()
|
||||
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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user