Merge pull request #351 from meilisearch/status-failed-updates-status

Add status failed on UpdateStatus
This commit is contained in:
Clément Renault 2019-11-28 18:53:31 +01:00 committed by GitHub
commit 08687d8dab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 3 deletions

View File

@ -461,7 +461,7 @@ mod tests {
let update_reader = db.update_read_txn().unwrap(); let update_reader = db.update_read_txn().unwrap();
let result = index.update_status(&update_reader, update_id).unwrap(); let result = index.update_status(&update_reader, update_id).unwrap();
assert_matches!(result, Some(UpdateStatus::Processed { content }) if content.error.is_some()); assert_matches!(result, Some(UpdateStatus::Failed { content }) if content.error.is_some());
} }
#[test] #[test]
@ -685,7 +685,7 @@ mod tests {
// check if it has been accepted // check if it has been accepted
let update_reader = db.update_read_txn().unwrap(); let update_reader = db.update_read_txn().unwrap();
let result = index.update_status(&update_reader, update_id).unwrap(); let result = index.update_status(&update_reader, update_id).unwrap();
assert_matches!(result, Some(UpdateStatus::Processed { content }) if content.error.is_some()); assert_matches!(result, Some(UpdateStatus::Failed { content }) if content.error.is_some());
} }
#[test] #[test]

View File

@ -197,6 +197,10 @@ pub enum UpdateStatus {
#[serde(flatten)] #[serde(flatten)]
content: EnqueuedUpdateResult, content: EnqueuedUpdateResult,
}, },
Failed {
#[serde(flatten)]
content: ProcessedUpdateResult,
},
Processed { Processed {
#[serde(flatten)] #[serde(flatten)]
content: ProcessedUpdateResult, content: ProcessedUpdateResult,
@ -210,7 +214,13 @@ pub fn update_status(
update_id: u64, update_id: u64,
) -> MResult<Option<UpdateStatus>> { ) -> MResult<Option<UpdateStatus>> {
match updates_results_store.update_result(update_reader, update_id)? { match updates_results_store.update_result(update_reader, update_id)? {
Some(result) => Ok(Some(UpdateStatus::Processed { content: result })), Some(result) => {
if result.error.is_some() {
Ok(Some(UpdateStatus::Failed { content: result }))
} else {
Ok(Some(UpdateStatus::Processed { content: result }))
}
},
None => match updates_store.get(update_reader, update_id)? { None => match updates_store.get(update_reader, update_id)? {
Some(update) => Ok(Some(UpdateStatus::Enqueued { Some(update) => Ok(Some(UpdateStatus::Enqueued {
content: EnqueuedUpdateResult { content: EnqueuedUpdateResult {