cli: fix rad inbox clear output
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. Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
parent
8bf871903a
commit
3556758386
|
|
@ -85,7 +85,7 @@ $ rad inbox show 1
|
||||||
```
|
```
|
||||||
|
|
||||||
``` ~alice
|
``` ~alice
|
||||||
$ rad inbox clear
|
$ rad inbox clear 1 2
|
||||||
✓ Cleared 2 item(s) from your inbox
|
✓ Cleared 2 item(s) from your inbox
|
||||||
$ rad inbox
|
$ rad inbox
|
||||||
Your inbox is empty.
|
Your inbox is empty.
|
||||||
|
|
|
||||||
|
|
@ -196,12 +196,16 @@ impl Store<Write> {
|
||||||
.db
|
.db
|
||||||
.prepare("DELETE FROM `repository-notifications` WHERE rowid = ?")?;
|
.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 {
|
for id in ids {
|
||||||
stmt.bind((1, *id as i64))?;
|
stmt.bind((1, *id as i64))?;
|
||||||
stmt.next()?;
|
stmt.next()?;
|
||||||
stmt.reset()?;
|
stmt.reset()?;
|
||||||
|
count += self.db.change_count();
|
||||||
}
|
}
|
||||||
Ok(self.db.change_count())
|
Ok(count)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue