Add counters

This commit is contained in:
Daniel Mason 2025-05-30 14:04:18 +12:00
parent cbcfa51004
commit cc9d2d5aae
Signed by: idanoo
GPG key ID: 387387CDBC02F132
3 changed files with 31 additions and 3 deletions

View file

@ -45,7 +45,7 @@ func (db *Database) UpdateCounterFor(key string, timestamp time.Time) (int64, er
// GetAllCounters
func (db *Database) GetAllCounters() (map[string]time.Time, error) {
counters := make(map[string]time.Time)
row, err := db.db.Query("SELECT id, timestamp FROM counter order by key ASC")
row, err := db.db.Query("SELECT key, timestamp FROM counter order by key ASC")
if err != nil {
return counters, err
}
@ -60,3 +60,13 @@ func (db *Database) GetAllCounters() (map[string]time.Time, error) {
return counters, nil
}
// DeleteCounter - Deletes a counter by key
func (db *Database) DeleteCounter(key string) (int64, error) {
res, err := db.db.Exec("DELETE FROM `counter` WHERE `key` = ?", key)
if err != nil {
return 0, err
}
return res.RowsAffected()
}

View file

@ -131,7 +131,7 @@ func (mtrx *MtrxClient) handleCommand(ctx context.Context, evt *event.Event) {
mtrx.getAllCounters(ctx, evt.RoomID)
return
} else {
mtrx.getCounterFor(ctx, evt.RoomID, args[1])
mtrx.getCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
return
}
case ".counterreset":
@ -139,7 +139,15 @@ func (mtrx *MtrxClient) handleCommand(ctx context.Context, evt *event.Event) {
mtrx.sendMessage(ctx, evt.RoomID, "Usage: .counterreset <key>")
return
} else {
mtrx.updateCounterFor(ctx, evt.RoomID, args[1])
mtrx.updateCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
return
}
case ".counterdel":
if len(args) < 2 {
mtrx.sendMessage(ctx, evt.RoomID, "Usage: .counterdel <key>")
return
} else {
mtrx.deleteCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
return
}
case ".reloadallpics":

View file

@ -45,3 +45,13 @@ func (mtrx *MtrxClient) updateCounterFor(ctx context.Context, roomID id.RoomID,
mtrx.sendMessage(ctx, roomID, "Updated counter for "+key)
}
func (mtrx *MtrxClient) deleteCounterFor(ctx context.Context, roomID id.RoomID, key string) {
_, err := mtrx.db.DeleteCounter(key)
if err != nil {
mtrx.sendMessage(ctx, roomID, "Failed to delete counter for "+key+": "+err.Error())
return
}
mtrx.sendMessage(ctx, roomID, "Deleted counter for "+key)
}