diff --git a/src/internal/database/counter.go b/src/internal/database/counter.go index 1b2c4b0..d30530e 100644 --- a/src/internal/database/counter.go +++ b/src/internal/database/counter.go @@ -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() +} diff --git a/src/internal/gomatrixbot/commands.go b/src/internal/gomatrixbot/commands.go index 5dc04c7..3486e8d 100644 --- a/src/internal/gomatrixbot/commands.go +++ b/src/internal/gomatrixbot/commands.go @@ -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 ") 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 ") + return + } else { + mtrx.deleteCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " ")) return } case ".reloadallpics": diff --git a/src/internal/gomatrixbot/counter.go b/src/internal/gomatrixbot/counter.go index e281557..bb69251 100644 --- a/src/internal/gomatrixbot/counter.go +++ b/src/internal/gomatrixbot/counter.go @@ -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) +}