1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
// Copyright (c) 2021 ruarango developers
//
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT
// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
//! Job operations trait
use anyhow::Result;
use async_trait::async_trait;
use serde::{de::DeserializeOwned, Serialize};
/// Collection Operations
#[async_trait]
pub trait Job {
/// Returns the processing status of the specified job. The processing status
/// can be determined by checking the HTTP response code.
///
/// * `200` is returned if the job requested via `id` has been executed
/// and its result is ready to fetch.
/// * `202` is returned if the job requested via `id` is still in the
/// queue of pending (or not yet finished) jobs.
/// * `404` is returned if the job was not found, has already deleted,
/// has already been fetched from the job result list.
async fn status(&self, id: &str) -> Result<u16>;
/// Docs
async fn fetch<T>(&self, id: &str) -> Result<T>
where
T: Serialize + DeserializeOwned + Send + Sync;
/// Docs
async fn fetch_doc_job<T>(&self, id: &str) -> Result<T>
where
T: Serialize + DeserializeOwned + Send + Sync;
/// Docs
async fn jobs(&self, kind: &str) -> Result<Vec<String>>;
}