use crate::{error::Result, http::Requester};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::sync::Arc;
#[derive(Debug, Clone, Deserialize, Serialize, canvas_lms_api_derive::CanvasResource)]
pub struct Progress {
pub id: u64,
pub context_id: Option<u64>,
pub context_type: Option<String>,
pub user_id: Option<u64>,
pub tag: Option<String>,
pub completion: Option<f64>,
pub workflow_state: Option<String>,
pub created_at: Option<DateTime<Utc>>,
pub updated_at: Option<DateTime<Utc>>,
pub message: Option<String>,
pub results: Option<serde_json::Value>,
pub url: Option<String>,
#[serde(skip)]
pub(crate) requester: Option<Arc<Requester>>,
}
impl Progress {
pub async fn query(&self) -> Result<Progress> {
let mut p: Progress = self
.req()
.get(&format!("progress/{}", self.id), &[])
.await?;
p.requester = self.requester.clone();
Ok(p)
}
}