Changeset 607 in code for trunk


Ignore:
Timestamp:
Oct 5, 2021, 5:31:06 PM (4 years ago)
Author:
contact
Message:

Add DB stats

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/db.go

    r568 r607  
    1010type Database interface {
    1111        Close() error
     12        Stats() (*DatabaseStats, error)
    1213
    1314        ListUsers() ([]User, error)
     
    2526        ListDeliveryReceipts(networkID int64) ([]DeliveryReceipt, error)
    2627        StoreClientDeliveryReceipts(networkID int64, client string, receipts []DeliveryReceipt) error
     28}
     29
     30type DatabaseStats struct {
     31        Users    int64
     32        Networks int64
     33        Channels int64
    2734}
    2835
  • trunk/db_sqlite.go

    r598 r607  
    206206}
    207207
     208func (db *SqliteDB) Stats() (*DatabaseStats, error) {
     209        db.lock.RLock()
     210        defer db.lock.RUnlock()
     211
     212        var stats DatabaseStats
     213        row := db.db.QueryRow(`SELECT
     214                (SELECT COUNT(*) FROM User) AS users,
     215                (SELECT COUNT(*) FROM Network) AS networks,
     216                (SELECT COUNT(*) FROM Channel) AS channels`)
     217        if err := row.Scan(&stats.Users, &stats.Networks, &stats.Channels); err != nil {
     218                return nil, err
     219        }
     220
     221        return &stats, nil
     222}
     223
    208224func toNullString(s string) sql.NullString {
    209225        return sql.NullString{
  • trunk/service.go

    r606 r607  
    10271027
    10281028func handleServiceServerStatus(dc *downstreamConn, params []string) error {
    1029         stats := dc.user.srv.Stats()
    1030         sendServicePRIVMSG(dc, fmt.Sprintf("%v users, %v downstreams", stats.Users, stats.Downstreams))
    1031         return nil
    1032 }
     1029        dbStats, err := dc.user.srv.db.Stats()
     1030        if err != nil {
     1031                return err
     1032        }
     1033        serverStats := dc.user.srv.Stats()
     1034        sendServicePRIVMSG(dc, fmt.Sprintf("%v/%v users, %v downstreams, %v networks, %v channels", serverStats.Users, dbStats.Users, serverStats.Downstreams, dbStats.Networks, dbStats.Channels))
     1035        return nil
     1036}
Note: See TracChangeset for help on using the changeset viewer.