Introduce a function to get all updates results

This commit is contained in:
Clément Renault 2019-10-29 11:30:44 +01:00
parent 9602d7a960
commit 8a17fcdda5
No known key found for this signature in database
GPG key ID: 92ADA4E935E71FA4
3 changed files with 46 additions and 4 deletions

View file

@ -202,6 +202,20 @@ impl Index {
update::update_status(reader, self.updates, self.updates_results, update_id)
}
pub fn all_updates_status(&self, reader: &heed::RoTxn) -> MResult<Vec<update::UpdateStatus>> {
match self.updates_results.last_update_id(reader)? {
Some((last_id, _)) => {
let mut updates = Vec::with_capacity(last_id as usize + 1);
for id in 0..=last_id {
let update = self.update_status(reader, id)?;
updates.push(update);
}
Ok(updates)
}
None => Ok(Vec::new()),
}
}
pub fn query_builder(&self) -> QueryBuilder {
QueryBuilder::new(
self.main,

View file

@ -47,12 +47,12 @@ pub enum UpdateType {
SynonymsDeletion { number: usize },
}
#[derive(Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DetailedDuration {
pub main: Duration,
}
#[derive(Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateResult {
pub update_id: u64,
pub update_type: UpdateType,
@ -60,7 +60,7 @@ pub struct UpdateResult {
pub detailed_duration: DetailedDuration,
}
#[derive(Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum UpdateStatus {
Enqueued,
Processed(UpdateResult),