Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
cli: fix rad inbox clear output
Merged fintohaps opened 2 years ago

If multiple ids are specified for rad inbox clear, it would report that only 1 item was cleared, when in fact multiple were.

This was found to be due to the SQL code returning a change count of 1. This is likely due to the way the statement is being reset each time. The sqlite library does not seem to easily support the usage of IN in a WHERE clause. So instead, the count is aggregated in the loop and returned instead.

2 files changed +6 -2 8bf87190 35567583
modified radicle-cli/examples/rad-inbox.md
@@ -85,7 +85,7 @@ $ rad inbox show 1
```

``` ~alice
-
$ rad inbox clear
+
$ rad inbox clear 1 2
✓ Cleared 2 item(s) from your inbox
$ rad inbox
Your inbox is empty.
modified radicle/src/node/notifications/store.rs
@@ -196,12 +196,16 @@ impl Store<Write> {
                .db
                .prepare("DELETE FROM `repository-notifications` WHERE rowid = ?")?;

+
            // N.b. we need to keep the count manually since the change count
+
            // will always be `1` because of each reset.
+
            let mut count = 0;
            for id in ids {
                stmt.bind((1, *id as i64))?;
                stmt.next()?;
                stmt.reset()?;
+
                count += self.db.change_count();
            }
-
            Ok(self.db.change_count())
+
            Ok(count)
        })
    }